<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>insert - Vim Documentation</title>
<meta name="Generator" content="Vim/8.0">
<meta name="plugin-version" content="vim8.0">
<meta name="syntax" content="help">
<meta name="settings" content="no_pre,use_css,expand_tabs">
<link rel="stylesheet" href="style.css" type="text/css" />

<script src="jquery.min.js" type="text/javascript"></script>
<script src="mark-current-page.js" type="text/javascript"></script>
</head>

<body>

<header>

<div class="header">
  <a href="http://vim-jp.org/">vim-jp</a>
  / <a href="http://vim-jp.org/vimdoc-en/">vimdoc-en</a>
  / insert<br />
  <a name="top"></a><h1>insert - Vim Documentation</h1>
  <a href="index.html">Return to main</a>

  <span class="EnglishJapaneseLink">
    <span class="CurrentLanguage">English</span>
  </span>
</div>
</header>

<nav>
<dl>

<dt>BASIC</dt>
<dd><ul>
<li><a href="quickref.html">quickref</a></li>
<li><a href="sponsor.html">sponsor</a></li>
</ul></dd>

<dt>USER MANUAL</dt>
<dd><ul>
<li><a href="usr_toc.html">usr_toc</a></li>
</ul></dd>

<dt>Getting Started</dt>
<dd><ul>
<li><a href="usr_01.html">usr_01</a></li>
<li><a href="usr_02.html">usr_02</a></li>
<li><a href="usr_03.html">usr_03</a></li>
<li><a href="usr_04.html">usr_04</a></li>
<li><a href="usr_05.html">usr_05</a></li>
<li><a href="usr_06.html">usr_06</a></li>
<li><a href="usr_07.html">usr_07</a></li>
<li><a href="usr_08.html">usr_08</a></li>
<li><a href="usr_09.html">usr_09</a></li>
<li><a href="usr_10.html">usr_10</a></li>
<li><a href="usr_11.html">usr_11</a></li>
<li><a href="usr_12.html">usr_12</a></li>
</ul></dd>

<dt>Editing Effectively</dt>
<dd><ul>
<li><a href="usr_20.html">usr_20</a></li>
<li><a href="usr_21.html">usr_21</a></li>
<li><a href="usr_22.html">usr_22</a></li>
<li><a href="usr_23.html">usr_23</a></li>
<li><a href="usr_24.html">usr_24</a></li>
<li><a href="usr_25.html">usr_25</a></li>
<li><a href="usr_26.html">usr_26</a></li>
<li><a href="usr_27.html">usr_27</a></li>
<li><a href="usr_28.html">usr_28</a></li>
<li><a href="usr_29.html">usr_29</a></li>
<li><a href="usr_30.html">usr_30</a></li>
<li><a href="usr_31.html">usr_31</a></li>
<li><a href="usr_32.html">usr_32</a></li>
</ul></dd>

<dt>Tuning Vim</dt>
<dd><ul>
<li><a href="usr_40.html">usr_40</a></li>
<li><a href="usr_41.html">usr_41</a></li>
<li><a href="usr_42.html">usr_42</a></li>
<li><a href="usr_43.html">usr_43</a></li>
<li><a href="usr_44.html">usr_44</a></li>
<li><a href="usr_45.html">usr_45</a></li>
</ul></dd>

<dt>Making Vim Run</dt>
<dd><ul>
<li><a href="usr_90.html">usr_90</a></li>
</ul></dd>

<dt>General subjects</dt>
<dd><ul>
<li><a href="intro.html">intro</a></li>
<li><a href="index.html">help</a></li>
<li><a href="helphelp.html">helphelp</a></li>
<li><a href="vimindex.html">index</a></li>
<li><a href="tags.html">tags</a></li>
<li><a href="howto.html">howto</a></li>
<li><a href="tips.html">tips</a></li>
<li><a href="message.html">message</a></li>
<li><a href="quotes.html">quotes</a></li>
<li><a href="todo.html">todo</a></li>
<li><a href="debug.html">debug</a></li>
<li><a href="develop.html">develop</a></li>
<li><a href="uganda.html">uganda</a></li>
</ul></dd>

<dt>Basic editing</dt>
<dd><ul>
<li><a href="starting.html">starting</a></li>
<li><a href="editing.html">editing</a></li>
<li><a href="motion.html">motion</a></li>
<li><a href="scroll.html">scroll</a></li>
<li><a href="insert.html">insert</a></li>
<li><a href="change.html">change</a></li>
<li><a href="indent.html">indent</a></li>
<li><a href="undo.html">undo</a></li>
<li><a href="repeat.html">repeat</a></li>
<li><a href="visual.html">visual</a></li>
<li><a href="various.html">various</a></li>
<li><a href="recover.html">recover</a></li>
</ul></dd>

<dt>Advanced editing</dt>
<dd><ul>
<li><a href="cmdline.html">cmdline</a></li>
<li><a href="options.html">options</a></li>
<li><a href="pattern.html">pattern</a></li>
<li><a href="map.html">map</a></li>
<li><a href="tagsrch.html">tagsrch</a></li>
<li><a href="quickfix.html">quickfix</a></li>
<li><a href="windows.html">windows</a></li>
<li><a href="tabpage.html">tabpage</a></li>
<li><a href="syntax.html">syntax</a></li>
<li><a href="spell.html">spell</a></li>
<li><a href="diff.html">diff</a></li>
<li><a href="autocmd.html">autocmd</a></li>
<li><a href="filetype.html">filetype</a></li>
<li><a href="eval.html">eval</a></li>
<li><a href="channel.html">channel</a></li>
<li><a href="fold.html">fold</a></li>
</ul></dd>

<dt>Special issues</dt>
<dd><ul>
<li><a href="print.html">print</a></li>
<li><a href="remote.html">remote</a></li>
<li><a href="term.html">term</a></li>
<li><a href="digraph.html">digraph</a></li>
<li><a href="mbyte.html">mbyte</a></li>
<li><a href="mlang.html">mlang</a></li>
<li><a href="arabic.html">arabic</a></li>
<li><a href="farsi.html">farsi</a></li>
<li><a href="hebrew.html">hebrew</a></li>
<li><a href="russian.html">russian</a></li>
<li><a href="ft_ada.html">ft_ada</a></li>
<li><a href="ft_sql.html">ft_sql</a></li>
<li><a href="hangulin.html">hangulin</a></li>
<li><a href="rileft.html">rileft</a></li>
</ul></dd>

<dt>GUI</dt>
<dd><ul>
<li><a href="gui.html">gui</a></li>
<li><a href="gui_w32.html">gui_w32</a></li>
<li><a href="gui_x11.html">gui_x11</a></li>
</ul></dd>

<dt>Interfaces</dt>
<dd><ul>
<li><a href="if_cscop.html">if_cscop</a></li>
<li><a href="if_lua.html">if_lua</a></li>
<li><a href="if_mzsch.html">if_mzsch</a></li>
<li><a href="if_perl.html">if_perl</a></li>
<li><a href="if_pyth.html">if_pyth</a></li>
<li><a href="if_tcl.html">if_tcl</a></li>
<li><a href="if_ole.html">if_ole</a></li>
<li><a href="if_ruby.html">if_ruby</a></li>
<li><a href="debugger.html">debugger</a></li>
<li><a href="workshop.html">workshop</a></li>
<li><a href="netbeans.html">netbeans</a></li>
<li><a href="sign.html">sign</a></li>
</ul></dd>

<dt>Versions</dt>
<dd><ul>
<li><a href="vi_diff.html">vi_diff</a></li>
<li><a href="version4.html">version4</a></li>
<li><a href="version5.html">version5</a></li>
<li><a href="version6.html">version6</a></li>
<li><a href="version7.html">version7</a></li>
<li><a href="version8.html">version8</a></li>
</ul></dd>

<dt>Remarks about specific systems</dt>
<dd><ul>
<li><a href="os_390.html">os_390</a></li>
<li><a href="os_amiga.html">os_amiga</a></li>
<li><a href="os_beos.html">os_beos</a></li>
<li><a href="os_dos.html">os_dos</a></li>
<li><a href="os_mac.html">os_mac</a></li>
<li><a href="os_mint.html">os_mint</a></li>
<li><a href="os_msdos.html">os_msdos</a></li>
<li><a href="os_os2.html">os_os2</a></li>
<li><a href="os_qnx.html">os_qnx</a></li>
<li><a href="os_risc.html">os_risc</a></li>
<li><a href="os_unix.html">os_unix</a></li>
<li><a href="os_vms.html">os_vms</a></li>
<li><a href="os_win32.html">os_win32</a></li>
</ul></dd>

<dt>Standard plugins</dt>
<dd><ul>
<li><a href="pi_getscript.html">pi_getscript</a></li>
<li><a href="pi_gzip.html">pi_gzip</a></li>
<li><a href="pi_logipat.html">pi_logipat</a></li>
<li><a href="pi_netrw.html">pi_netrw</a></li>
<li><a href="pi_paren.html">pi_paren</a></li>
<li><a href="pi_tar.html">pi_tar</a></li>
<li><a href="pi_vimball.html">pi_vimball</a></li>
<li><a href="pi_zip.html">pi_zip</a></li>
</ul></dd>

<dt>Filetype plugins</dt>
<dd><ul>
<li><a href="pi_spec.html">pi_spec</a></li>
</ul></dd>

<dt>Others</dt>
<dd><ul>
<li><a href="vim_faq.html">vim_faq</a></li>
</ul></dd>

</dl>
</nav>

<article class="Vimdoc VimdocJa">
<div id='vimCodeElement'>
<a class="Constant" href="insert.html" name="insert.txt">insert.txt</a>&nbsp;&nbsp;&nbsp;&nbsp;For&nbsp;<span class="Identifier">Vim version 8.0.</span>&nbsp;&nbsp;Last change: 2017 May 30<br>
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Identifier">VIM REFERENCE MANUAL&nbsp;&nbsp;&nbsp;&nbsp;by Bram Moolenaar</span><br>
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#Insert" name="Insert">Insert</a>&nbsp;<a class="Constant" href="insert.html#Insert-mode" name="Insert-mode">Insert-mode</a><br>
Inserting and replacing text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#mode-ins-repl" name="mode-ins-repl">mode-ins-repl</a><br>
<br>
Most of this file is about Insert and Replace mode.&nbsp;&nbsp;At the end are a few<br>
commands for inserting text in other ways.<br>
<br>
An overview of the most often used commands can be found in chapter 24 of the<br>
user manual&nbsp;<a class="Identifier" href="usr_24.html">usr_24.txt</a>.<br>
<br>
1. Special keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#ins-special-keys">ins-special-keys</a><br>
2. Special special keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#ins-special-special">ins-special-special</a><br>
3.&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;and&nbsp;<a class="Type" href="options.html#'wrapmargin'">'wrapmargin'</a>&nbsp;options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#ins-textwidth">ins-textwidth</a><br>
4.&nbsp;<a class="Type" href="options.html#'expandtab'">'expandtab'</a>,&nbsp;<a class="Type" href="options.html#'smarttab'">'smarttab'</a>&nbsp;and&nbsp;<a class="Type" href="options.html#'softtabstop'">'softtabstop'</a>&nbsp;&nbsp;options&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#ins-expandtab">ins-expandtab</a><br>
5. Replace mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#Replace-mode">Replace-mode</a><br>
6. Virtual Replace mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#Virtual-Replace-mode">Virtual-Replace-mode</a><br>
7. Insert mode completion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#ins-completion">ins-completion</a><br>
8. Insert mode commands&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#inserting">inserting</a><br>
9. Ex insert commands&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#inserting-ex">inserting-ex</a><br>
10. Inserting a file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#inserting-file">inserting-file</a><br>
<br>
Also see&nbsp;<a class="Type" href="options.html#'virtualedit'">'virtualedit'</a>, for moving the cursor to positions where there is no<br>
character.&nbsp;&nbsp;Useful for editing a table.<br>
<br>
<span class="PreProc">==============================================================================</span><br>
1. Special keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#ins-special-keys" name="ins-special-keys">ins-special-keys</a><br>
<br>
In Insert and Replace mode, the following characters have a special meaning;<br>
other characters are inserted directly.&nbsp;&nbsp;To insert one of these special<br>
characters into the buffer, precede it with&nbsp;<span class="Special">CTRL-V</span>.&nbsp;&nbsp;To insert a&nbsp;<span class="Special">&lt;Nul&gt;</span><br>
character use &quot;<span class="Special">CTRL-V</span>&nbsp;<span class="Special">CTRL-@</span>&quot; or &quot;<span class="Special">CTRL-V</span>&nbsp;000&quot;.&nbsp;&nbsp;On some systems, you have to<br>
use &quot;<span class="Special">CTRL-V</span>&nbsp;003&quot; to insert a&nbsp;<span class="Special">CTRL-C</span>.&nbsp;&nbsp;<span class="Todo">Note</span>: When&nbsp;<span class="Special">CTRL-V</span>&nbsp;is mapped you can<br>
often use&nbsp;<span class="Special">CTRL-Q</span>&nbsp;instead&nbsp;<a class="Identifier" href="insert.html#i_CTRL-Q">i_CTRL-Q</a>.<br>
<br>
If you are working in a special language mode when inserting text, see the<br>
<a class="Type" href="options.html#'langmap'">'langmap'</a>&nbsp;option,&nbsp;<a class="Identifier" href="options.html#'langmap'">'langmap'</a>, on how to avoid switching this mode on and off<br>
all the time.<br>
<br>
If you have&nbsp;<a class="Type" href="options.html#'insertmode'">'insertmode'</a>&nbsp;set,&nbsp;<span class="Special">&lt;Esc&gt;</span>&nbsp;and a few other keys get another meaning.<br>
See&nbsp;<a class="Identifier" href="options.html#'insertmode'">'insertmode'</a>.<br>
<br>
<span class="PreProc">char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action</span><br>
<span class="PreProc">-----------------------------------------------------------------------</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-[" name="i_CTRL-[">i_CTRL-[</a>&nbsp;<a class="Constant" href="insert.html#i_<Esc>" name="i_&lt;Esc&gt;">i_&lt;Esc&gt;</a><br>
<span class="Special">&lt;Esc&gt;</span>&nbsp;or&nbsp;<span class="Special">CTRL-[</span>&nbsp;End insert or Replace mode, go back to Normal mode.&nbsp;&nbsp;Finish<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbreviation.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Todo">Note</span>: If your&nbsp;<span class="Special">&lt;Esc&gt;</span>&nbsp;key is hard to hit on your keyboard, train<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yourself to use&nbsp;<span class="Special">CTRL-[</span>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Esc doesn't work and you are using a Mac, try&nbsp;<span class="Special">CTRL-E</span>sc.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Or disable Listening under Accessibility preferences.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-C" name="i_CTRL-C">i_CTRL-C</a><br>
<span class="Special">CTRL-C</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Quit insert mode, go back to Normal mode.&nbsp;&nbsp;Do not check for<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbreviations.&nbsp;&nbsp;Does not trigger the&nbsp;<a class="Identifier" href="autocmd.html#InsertLeave">InsertLeave</a>&nbsp;autocommand<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;event.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-@" name="i_CTRL-@">i_CTRL-@</a><br>
<span class="Special">CTRL-@</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert previously inserted text and stop insert.&nbsp;&nbsp;<span class="Special">{Vi: only</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">when typed as first char, only up to 128 chars}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-A" name="i_CTRL-A">i_CTRL-A</a><br>
<span class="Special">CTRL-A</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert previously inserted text.&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-H" name="i_CTRL-H">i_CTRL-H</a>&nbsp;<a class="Constant" href="insert.html#i_<BS>" name="i_&lt;BS&gt;">i_&lt;BS&gt;</a>&nbsp;<a class="Constant" href="insert.html#i_BS" name="i_BS">i_BS</a><br>
<span class="Special">&lt;BS&gt;</span>&nbsp;or&nbsp;<span class="Special">CTRL-H</span>&nbsp;&nbsp;Delete the character before the cursor (see&nbsp;<a class="Identifier" href="insert.html#i_backspacing">i_backspacing</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;about joining lines).<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See&nbsp;<a class="Identifier" href="options.html#:fixdel">:fixdel</a>&nbsp;if your&nbsp;<span class="Special">&lt;BS&gt;</span>&nbsp;key does not do what you want.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">{Vi: does not delete autoindents}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<Del>" name="i_&lt;Del&gt;">i_&lt;Del&gt;</a>&nbsp;<a class="Constant" href="insert.html#i_DEL" name="i_DEL">i_DEL</a><br>
<span class="Special">&lt;Del&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Delete the character under the cursor.&nbsp;&nbsp;If the cursor is at<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the end of the line, and the&nbsp;<a class="Type" href="options.html#'backspace'">'backspace'</a>&nbsp;option includes<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;eol&quot;, delete the&nbsp;<span class="Special">&lt;EOL&gt;</span>; the next line is appended after the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;current one.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See&nbsp;<a class="Identifier" href="options.html#:fixdel">:fixdel</a>&nbsp;if your&nbsp;<span class="Special">&lt;Del&gt;</span>&nbsp;key does not do what you want.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-W" name="i_CTRL-W">i_CTRL-W</a><br>
<span class="Special">CTRL-W</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delete the word before the cursor (see&nbsp;<a class="Identifier" href="insert.html#i_backspacing">i_backspacing</a>&nbsp;about<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;joining lines).&nbsp;&nbsp;See the section &quot;word motions&quot;,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="motion.html#word-motions">word-motions</a>, for the definition of a word.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-U" name="i_CTRL-U">i_CTRL-U</a><br>
<span class="Special">CTRL-U</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delete all entered characters before the cursor in the current<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line.&nbsp;&nbsp;If there are no newly entered characters and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Type" href="options.html#'backspace'">'backspace'</a>&nbsp;is not empty, delete all characters before the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor in the current line.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See&nbsp;<a class="Identifier" href="insert.html#i_backspacing">i_backspacing</a>&nbsp;about joining lines.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-I" name="i_CTRL-I">i_CTRL-I</a>&nbsp;<a class="Constant" href="insert.html#i_<Tab>" name="i_&lt;Tab&gt;">i_&lt;Tab&gt;</a>&nbsp;<a class="Constant" href="insert.html#i_Tab" name="i_Tab">i_Tab</a><br>
<span class="Special">&lt;Tab&gt;</span>&nbsp;or&nbsp;<span class="Special">CTRL-I</span>&nbsp;Insert a tab.&nbsp;&nbsp;If the&nbsp;<a class="Type" href="options.html#'expandtab'">'expandtab'</a>&nbsp;option is on, the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equivalent number of spaces is inserted (use&nbsp;<span class="Special">CTRL-V</span>&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;avoid the expansion; use&nbsp;<span class="Special">CTRL-Q</span>&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;if&nbsp;<span class="Special">CTRL-V</span>&nbsp;is mapped<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-Q">i_CTRL-Q</a>).&nbsp;&nbsp;See also the&nbsp;<a class="Type" href="options.html#'smarttab'">'smarttab'</a>&nbsp;option and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#ins-expandtab">ins-expandtab</a>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-J" name="i_CTRL-J">i_CTRL-J</a>&nbsp;<a class="Constant" href="insert.html#i_<NL>" name="i_&lt;NL&gt;">i_&lt;NL&gt;</a><br>
<span class="Special">&lt;NL&gt;</span>&nbsp;or&nbsp;<span class="Special">CTRL-J</span>&nbsp;&nbsp;Begin new line.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-M" name="i_CTRL-M">i_CTRL-M</a>&nbsp;<a class="Constant" href="insert.html#i_<CR>" name="i_&lt;CR&gt;">i_&lt;CR&gt;</a><br>
<span class="Special">&lt;CR&gt;</span>&nbsp;or&nbsp;<span class="Special">CTRL-M</span>&nbsp;&nbsp;Begin new line.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-K" name="i_CTRL-K">i_CTRL-K</a><br>
<span class="Special">CTRL-K</span>&nbsp;<span class="Special">{char1}</span>&nbsp;<span class="Special">[char2]</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enter digraph (see&nbsp;<a class="Identifier" href="digraph.html#digraphs">digraphs</a>).&nbsp;&nbsp;When&nbsp;<span class="Special">{char1}</span>&nbsp;is a special<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key, the code for that key is inserted in &lt;&gt; form.&nbsp;&nbsp;For<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;example, the string &quot;<span class="Special">&lt;S-Space&gt;</span>&quot; can be entered by typing<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">&lt;C-K&gt;&lt;S-Space&gt;</span>&nbsp;(two keys).&nbsp;&nbsp;Neither char is considered for<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mapping.&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Find next keyword (see&nbsp;<a class="Identifier" href="insert.html#i_CTRL-N">i_CTRL-N</a>).&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Find previous keyword (see&nbsp;<a class="Identifier" href="insert.html#i_CTRL-P">i_CTRL-P</a>).&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
<span class="Special">CTRL-R</span>&nbsp;<span class="Special">{0-9a-z&quot;%#*+:.-=}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-R" name="i_CTRL-R">i_CTRL-R</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert the contents of a register.&nbsp;&nbsp;Between typing&nbsp;<span class="Special">CTRL-R</span>&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the second character, '&quot;' will be displayed to indicate that<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;you are expected to enter the name of a register.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The text is inserted as if you typed it, but mappings and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbreviations are not used.&nbsp;&nbsp;If you have options like<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>,&nbsp;<a class="Type" href="options.html#'formatoptions'">'formatoptions'</a>, or&nbsp;<a class="Type" href="options.html#'autoindent'">'autoindent'</a>&nbsp;set, this will<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;influence what will be inserted.&nbsp;&nbsp;This is different from what<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;happens with the &quot;p&quot; command and pasting with the mouse.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Special registers:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&quot;'&nbsp;&nbsp;&nbsp;&nbsp; the unnamed register, containing the text of<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the last delete or yank<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'%'&nbsp;&nbsp;&nbsp;&nbsp; the current file name<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'#'&nbsp;&nbsp;&nbsp;&nbsp; the alternate file name<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'*'&nbsp;&nbsp;&nbsp;&nbsp; the clipboard contents (X11: primary selection)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+'&nbsp;&nbsp;&nbsp;&nbsp; the clipboard contents<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'/'&nbsp;&nbsp;&nbsp;&nbsp; the last search pattern<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;':'&nbsp;&nbsp;&nbsp;&nbsp; the last command-line<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.'&nbsp;&nbsp;&nbsp;&nbsp; the last inserted text<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'-'&nbsp;&nbsp;&nbsp;&nbsp; the last small (less than a line) delete<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-R_=" name="i_CTRL-R_=">i_CTRL-R_=</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'='&nbsp;&nbsp;&nbsp;&nbsp; the expression register: you are prompted to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enter an expression (see&nbsp;<a class="Identifier" href="eval.html#expression">expression</a>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Todo">Note</span>&nbsp;that 0x80 (128 decimal) is used for<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;special keys.&nbsp;&nbsp;E.g., you can use this to move<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the cursor up:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-R</span>&nbsp;=&quot;\<span class="Special">&lt;Up&gt;</span>&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use&nbsp;<span class="Special">CTRL-R</span>&nbsp;<span class="Special">CTRL-R</span>&nbsp;to insert text literally.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When the result is a&nbsp;<a class="Identifier" href="eval.html#List">List</a>&nbsp;the items are used<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as lines.&nbsp;&nbsp;They can have line breaks inside<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;too.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When the result is a Float it's automatically<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;converted to a String.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When append() or setline() is invoked the undo<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sequence will be broken.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See&nbsp;<a class="Identifier" href="change.html#registers">registers</a>&nbsp;about registers.&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
<span class="Special">CTRL-R</span>&nbsp;<span class="Special">CTRL-R</span>&nbsp;<span class="Special">{0-9a-z&quot;%#*+/:.-=}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-R_CTRL-R" name="i_CTRL-R_CTRL-R">i_CTRL-R_CTRL-R</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert the contents of a register.&nbsp;&nbsp;Works like using a single<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-R</span>, but the text is inserted literally, not as if typed.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This differs when the register contains characters like&nbsp;<span class="Special">&lt;BS&gt;</span>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Example, where register a contains &quot;ab^Hc&quot;:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CTRL-R a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;results in &quot;ac&quot;.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CTRL-R CTRL-R a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results in &quot;ab^Hc&quot;.</div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>,&nbsp;<a class="Type" href="options.html#'formatoptions'">'formatoptions'</a>, etc. still apply.&nbsp;&nbsp;If<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;you also want to avoid these, use&nbsp;<span class="Special">CTRL-R</span>&nbsp;<span class="Special">CTRL-O</span>, see below.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The '.' register (last inserted text) is still inserted as<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typed.&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
<span class="Special">CTRL-R</span>&nbsp;<span class="Special">CTRL-O</span>&nbsp;<span class="Special">{0-9a-z&quot;%#*+/:.-=}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-R_CTRL-O" name="i_CTRL-R_CTRL-O">i_CTRL-R_CTRL-O</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert the contents of a register literally and don't<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auto-indent.&nbsp;&nbsp;Does the same as pasting with the mouse<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="change.html#<MiddleMouse>">&lt;MiddleMouse&gt;</a>. When the register is linewise this will<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert the text above the current line, like with&nbsp;<a class="Comment" href="change.html#P">P</a>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Does not replace characters!<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The '.' register (last inserted text) is still inserted as<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typed.&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
<span class="Special">CTRL-R</span>&nbsp;<span class="Special">CTRL-P</span>&nbsp;<span class="Special">{0-9a-z&quot;%#*+/:.-=}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-R_CTRL-P" name="i_CTRL-R_CTRL-P">i_CTRL-R_CTRL-P</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert the contents of a register literally and fix the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indent, like&nbsp;<a class="Identifier" href="change.html#[<MiddleMouse>">[&lt;MiddleMouse&gt;</a>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Does not replace characters!<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The '.' register (last inserted text) is still inserted as<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typed.&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-T" name="i_CTRL-T">i_CTRL-T</a><br>
<span class="Special">CTRL-T</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert one shiftwidth of indent at the start of the current<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line.&nbsp;&nbsp;The indent is always rounded to a&nbsp;<a class="Type" href="options.html#'shiftwidth'">'shiftwidth'</a>&nbsp;(this is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vi compatible).&nbsp;&nbsp;<span class="Special">{Vi: only when in indent}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-D" name="i_CTRL-D">i_CTRL-D</a><br>
<span class="Special">CTRL-D</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delete one shiftwidth of indent at the start of the current<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line.&nbsp;&nbsp;The indent is always rounded to a&nbsp;<a class="Type" href="options.html#'shiftwidth'">'shiftwidth'</a>&nbsp;(this is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vi compatible).&nbsp;&nbsp;<span class="Special">{Vi: CTRL-D works only when used after</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">autoindent}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_0_CTRL-D" name="i_0_CTRL-D">i_0_CTRL-D</a><br>
0&nbsp;<span class="Special">CTRL-D</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delete all indent in the current line.&nbsp;&nbsp;<span class="Special">{Vi: CTRL-D works</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">only when used after autoindent}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_^_CTRL-D" name="i_^_CTRL-D">i_^_CTRL-D</a><br>
^&nbsp;<span class="Special">CTRL-D</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Delete all indent in the current line.&nbsp;&nbsp;The indent is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;restored in the next line.&nbsp;&nbsp;This is useful when inserting a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;label.&nbsp;&nbsp;<span class="Special">{Vi: CTRL-D works only when used after autoindent}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-V" name="i_CTRL-V">i_CTRL-V</a><br>
<span class="Special">CTRL-V</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert next non-digit literally.&nbsp;&nbsp;For special keys, the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;terminal code is inserted.&nbsp;&nbsp;It's also possible to enter the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal, octal or hexadecimal value of a character<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-V_digit">i_CTRL-V_digit</a>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The characters typed right after&nbsp;<span class="Special">CTRL-V</span>&nbsp;are not considered for<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mapping.&nbsp;&nbsp;<span class="Special">{Vi: no decimal byte entry}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Todo">Note</span>: When&nbsp;<span class="Special">CTRL-V</span>&nbsp;is mapped (e.g., to paste text) you can<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;often use&nbsp;<span class="Special">CTRL-Q</span>&nbsp;instead&nbsp;<a class="Identifier" href="insert.html#i_CTRL-Q">i_CTRL-Q</a>.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-Q" name="i_CTRL-Q">i_CTRL-Q</a><br>
<span class="Special">CTRL-Q</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Same as&nbsp;<span class="Special">CTRL-V</span>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Todo">Note</span>: Some terminal connections may eat&nbsp;<span class="Special">CTRL-Q</span>, it doesn't<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;work then.&nbsp;&nbsp;It does work in the GUI.<br>
<br>
<span class="Special">CTRL-X</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enter&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode.&nbsp;&nbsp;This is a sub-mode where commands can<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be given to complete words or scroll the window.&nbsp;&nbsp;See<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X">i_CTRL-X</a>&nbsp;and&nbsp;<a class="Identifier" href="insert.html#ins-completion">ins-completion</a>.&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-E" name="i_CTRL-E">i_CTRL-E</a><br>
<span class="Special">CTRL-E</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert the character which is below the cursor.&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-Y" name="i_CTRL-Y">i_CTRL-Y</a><br>
<span class="Special">CTRL-Y</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert the character which is above the cursor.&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Todo">Note</span>&nbsp;that for&nbsp;<span class="Special">CTRL-E</span>&nbsp;and&nbsp;<span class="Special">CTRL-Y</span>&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;is not used, to be<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;able to copy characters from a long line.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-_" name="i_CTRL-_">i_CTRL-_</a><br>
<span class="Special">CTRL-_</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Switch between languages, as follows:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;When in a rightleft window, revins and nohkmap are toggled,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; since English will likely be inserted in this case.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;When in a norightleft window, revins and hkmap are toggled,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; since Hebrew will likely be inserted in this case.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-_</span>&nbsp;moves the cursor to the end of the typed text.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This command is only available when the&nbsp;<a class="Type" href="options.html#'allowrevins'">'allowrevins'</a>&nbsp;option<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is set.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Please refer to&nbsp;<a class="Identifier" href="rileft.html">rileft.txt</a>&nbsp;for more information about<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;right-to-left mode.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Only if compiled with the&nbsp;<a class="Identifier" href="various.html#+rightleft">+rightleft</a>&nbsp;feature.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-^" name="i_CTRL-^">i_CTRL-^</a><br>
<span class="Special">CTRL-^</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Toggle the use of typing language characters.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When language&nbsp;<a class="Identifier" href="map.html#:lmap">:lmap</a>&nbsp;mappings are defined:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- If&nbsp;<a class="Type" href="options.html#'iminsert'">'iminsert'</a>&nbsp;is 1 (langmap mappings used) it becomes 0 (no<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;langmap mappings used).<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- If&nbsp;<a class="Type" href="options.html#'iminsert'">'iminsert'</a>&nbsp;has another value it becomes 1, thus langmap<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mappings are enabled.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When no language mappings are defined:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- If&nbsp;<a class="Type" href="options.html#'iminsert'">'iminsert'</a>&nbsp;is 2 (Input Method used) it becomes 0 (no<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Input Method used).<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- If&nbsp;<a class="Type" href="options.html#'iminsert'">'iminsert'</a>&nbsp;has another value it becomes 2, thus the Input<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method is enabled.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When set to 1, the value of the &quot;b:keymap_name&quot; variable, the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Type" href="options.html#'keymap'">'keymap'</a>&nbsp;option or &quot;<span class="Special">&lt;lang&gt;</span>&quot; appears in the status line.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The language mappings are normally used to type characters<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;that are different from what the keyboard produces.&nbsp;&nbsp;The<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Type" href="options.html#'keymap'">'keymap'</a>&nbsp;option can be used to install a whole number of them.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-]" name="i_CTRL-]">i_CTRL-]</a><br>
<span class="Special">CTRL-]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trigger abbreviation, without inserting a character.&nbsp;&nbsp;<span class="Special">{not in</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">Vi}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<Insert>" name="i_&lt;Insert&gt;">i_&lt;Insert&gt;</a><br>
<span class="Special">&lt;Insert&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Toggle between Insert and Replace mode.&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<span class="PreProc">-----------------------------------------------------------------------</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_backspacing" name="i_backspacing">i_backspacing</a><br>
The effect of the&nbsp;<span class="Special">&lt;BS&gt;</span>,&nbsp;<span class="Special">CTRL-W</span>, and&nbsp;<span class="Special">CTRL-U</span>&nbsp;depend on the&nbsp;<a class="Type" href="options.html#'backspace'">'backspace'</a>&nbsp;option<br>
(unless&nbsp;<a class="Type" href="options.html#'revins'">'revins'</a>&nbsp;is set).&nbsp;&nbsp;This is a comma separated list of items:<br>
<br>
<span class="PreProc">item&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action</span><br>
indent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allow backspacing over autoindent<br>
eol&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow backspacing over end-of-line (join lines)<br>
start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow backspacing over the start position of insert;&nbsp;<span class="Special">CTRL-W</span>&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-U</span>&nbsp;stop once at the start position<br>
<br>
When&nbsp;<a class="Type" href="options.html#'backspace'">'backspace'</a>&nbsp;is empty, Vi compatible backspacing is used.&nbsp;&nbsp;You cannot<br>
backspace over autoindent, before column 1 or before where insert started.<br>
<br>
For backwards compatibility the values &quot;0&quot;, &quot;1&quot; and &quot;2&quot; are also allowed, see<br>
<a class="Identifier" href="options.html#'backspace'">'backspace'</a>.<br>
<br>
If the&nbsp;<a class="Type" href="options.html#'backspace'">'backspace'</a>&nbsp;option does contain &quot;eol&quot; and the cursor is in column 1<br>
when one of the three keys is used, the current line is joined with the<br>
previous line.&nbsp;&nbsp;This effectively deletes the&nbsp;<span class="Special">&lt;EOL&gt;</span>&nbsp;in front of the cursor.<br>
<span class="Special">{Vi: does not cross lines, does not delete past start position of insert}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-V_digit" name="i_CTRL-V_digit">i_CTRL-V_digit</a><br>
With&nbsp;<span class="Special">CTRL-V</span>&nbsp;the decimal, octal or hexadecimal value of a character can be<br>
entered directly.&nbsp;&nbsp;This way you can enter any character, except a line break<br>
(<span class="Special">&lt;NL&gt;</span>, value 10).&nbsp;&nbsp;There are five ways to enter the character value:<br>
<br>
<span class="PreProc">first char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; max nr of chars&nbsp;&nbsp; max value</span><br>
(none)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;decimal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;255<br>
o or O&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;octal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;377&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(255)<br>
x or X&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hexadecimal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (255)<br>
u&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hexadecimal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ffff&nbsp;&nbsp;&nbsp;&nbsp; (65535)<br>
U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hexadecimal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7fffffff (2147483647)<br>
<br>
Normally you would type the maximum number of characters.&nbsp;&nbsp;Thus to enter a<br>
space (value 32) you would type&nbsp;<span class="Special">&lt;C-V&gt;</span>032.&nbsp;&nbsp;You can omit the leading zero, in<br>
which case the character typed after the number must be a non-digit.&nbsp;&nbsp;This<br>
happens for the other modes as well: As soon as you type a character that is<br>
invalid for the mode, the value before it will be used and the &quot;invalid&quot;<br>
character is dealt with in the normal way.<br>
<br>
If you enter a value of 10, it will end up in the file as a 0.&nbsp;&nbsp;The 10 is a<br>
<span class="Special">&lt;NL&gt;</span>, which is used internally to represent the&nbsp;<span class="Special">&lt;Nul&gt;</span>&nbsp;character.&nbsp;&nbsp;When writing<br>
the buffer to a file, the&nbsp;<span class="Special">&lt;NL&gt;</span>&nbsp;character is translated into&nbsp;<span class="Special">&lt;Nul&gt;</span>.&nbsp;&nbsp;The&nbsp;<span class="Special">&lt;NL&gt;</span><br>
character is written at the end of each line.&nbsp;&nbsp;Thus if you want to insert a<br>
<span class="Special">&lt;NL&gt;</span>&nbsp;character in a file you will have to make a line break.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X" name="i_CTRL-X">i_CTRL-X</a>&nbsp;<a class="Constant" href="insert.html#insert_expand" name="insert_expand">insert_expand</a><br>
<span class="Special">CTRL-X</span>&nbsp;enters a sub-mode where several commands can be used.&nbsp;&nbsp;Most of these<br>
commands do keyword completion; see&nbsp;<a class="Identifier" href="insert.html#ins-completion">ins-completion</a>.&nbsp;&nbsp;These are not available<br>
when Vim was compiled without the&nbsp;<a class="Identifier" href="various.html#+insert_expand">+insert_expand</a>&nbsp;feature.<br>
<br>
Two commands can be used to scroll the window up or down, without exiting<br>
insert mode:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-E" name="i_CTRL-X_CTRL-E">i_CTRL-X_CTRL-E</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-E</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scroll window one line up.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When doing completion look here:&nbsp;<a class="Identifier" href="insert.html#complete_CTRL-E">complete_CTRL-E</a><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-Y" name="i_CTRL-X_CTRL-Y">i_CTRL-X_CTRL-Y</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-Y</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scroll window one line down.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When doing completion look here:&nbsp;<a class="Identifier" href="insert.html#complete_CTRL-Y">complete_CTRL-Y</a><br>
<br>
After&nbsp;<span class="Special">CTRL-X</span>&nbsp;is pressed, each&nbsp;<span class="Special">CTRL-E</span>&nbsp;(<span class="Special">CTRL-Y</span>) scrolls the window up (down) by<br>
one line unless that would cause the cursor to move from its current position<br>
in the file.&nbsp;&nbsp;As soon as another key is pressed,&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode is exited and<br>
that key is interpreted as in Insert mode.<br>
<br>
<br>
<span class="PreProc">==============================================================================</span><br>
2. Special special keys&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#ins-special-special" name="ins-special-special">ins-special-special</a><br>
<br>
The following keys are special.&nbsp;&nbsp;They stop the current insert, do something,<br>
and then restart insertion.&nbsp;&nbsp;This means you can do something without getting<br>
out of Insert mode.&nbsp;&nbsp;This is very handy if you prefer to use the Insert mode<br>
all the time, just like editors that don't have a separate Normal mode.&nbsp;&nbsp;You<br>
may also want to set the&nbsp;<a class="Type" href="options.html#'backspace'">'backspace'</a>&nbsp;option to &quot;indent,eol,start&quot; and set the<br>
<a class="Type" href="options.html#'insertmode'">'insertmode'</a>&nbsp;option.&nbsp;&nbsp;You can use&nbsp;<span class="Special">CTRL-O</span>&nbsp;if you want to map a function key to<br>
a command.<br>
<br>
The changes (inserted or deleted characters) before and after these keys can<br>
be undone separately.&nbsp;&nbsp;Only the last change can be redone and always behaves<br>
like an &quot;i&quot; command.<br>
<br>
<span class="PreProc">char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action</span><br>
<span class="PreProc">-----------------------------------------------------------------------</span><br>
<span class="Special">&lt;Up&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor one line up&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<Up>" name="i_&lt;Up&gt;">i_&lt;Up&gt;</a><br>
<span class="Special">&lt;Down&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor one line down&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<Down>" name="i_&lt;Down&gt;">i_&lt;Down&gt;</a><br>
<span class="Special">CTRL-G</span>&nbsp;<span class="Special">&lt;Up&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp; cursor one line up, insert start column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-G_<Up>" name="i_CTRL-G_&lt;Up&gt;">i_CTRL-G_&lt;Up&gt;</a><br>
<span class="Special">CTRL-G</span>&nbsp;k&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor one line up, insert start column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-G_k" name="i_CTRL-G_k">i_CTRL-G_k</a><br>
<span class="Special">CTRL-G</span>&nbsp;<span class="Special">CTRL-K</span>&nbsp;&nbsp; cursor one line up, insert start column&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-G_CTRL-K" name="i_CTRL-G_CTRL-K">i_CTRL-G_CTRL-K</a><br>
<span class="Special">CTRL-G</span>&nbsp;<span class="Special">&lt;Down&gt;</span>&nbsp;&nbsp; cursor one line down, insert start column&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-G_<Down>" name="i_CTRL-G_&lt;Down&gt;">i_CTRL-G_&lt;Down&gt;</a><br>
<span class="Special">CTRL-G</span>&nbsp;j&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor one line down, insert start column&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-G_j" name="i_CTRL-G_j">i_CTRL-G_j</a><br>
<span class="Special">CTRL-G</span>&nbsp;<span class="Special">CTRL-J</span>&nbsp;&nbsp; cursor one line down, insert start column&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-G_CTRL-J" name="i_CTRL-G_CTRL-J">i_CTRL-G_CTRL-J</a><br>
<span class="Special">&lt;Left&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor one character left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<Left>" name="i_&lt;Left&gt;">i_&lt;Left&gt;</a><br>
<span class="Special">&lt;Right&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cursor one character right&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<Right>" name="i_&lt;Right&gt;">i_&lt;Right&gt;</a><br>
<span class="Special">&lt;S-Left&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor one word back (like &quot;b&quot; command)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<S-Left>" name="i_&lt;S-Left&gt;">i_&lt;S-Left&gt;</a><br>
<span class="Special">&lt;C-Left&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor one word back (like &quot;b&quot; command)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<C-Left>" name="i_&lt;C-Left&gt;">i_&lt;C-Left&gt;</a><br>
<span class="Special">&lt;S-Right&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cursor one word forward (like &quot;w&quot; command)&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<S-Right>" name="i_&lt;S-Right&gt;">i_&lt;S-Right&gt;</a><br>
<span class="Special">&lt;C-Right&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cursor one word forward (like &quot;w&quot; command)&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<C-Right>" name="i_&lt;C-Right&gt;">i_&lt;C-Right&gt;</a><br>
<span class="Special">&lt;Home&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor to first char in the line&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<Home>" name="i_&lt;Home&gt;">i_&lt;Home&gt;</a><br>
<span class="Special">&lt;End&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cursor to after last char in the line&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<End>" name="i_&lt;End&gt;">i_&lt;End&gt;</a><br>
<span class="Special">&lt;C-Home&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor to first char in the file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<C-Home>" name="i_&lt;C-Home&gt;">i_&lt;C-Home&gt;</a><br>
<span class="Special">&lt;C-End&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cursor to after last char in the file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<C-End>" name="i_&lt;C-End&gt;">i_&lt;C-End&gt;</a><br>
<span class="Special">&lt;LeftMouse&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp; cursor to position of mouse click&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<LeftMouse>" name="i_&lt;LeftMouse&gt;">i_&lt;LeftMouse&gt;</a><br>
<span class="Special">&lt;S-Up&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move window one page up&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<S-Up>" name="i_&lt;S-Up&gt;">i_&lt;S-Up&gt;</a><br>
<span class="Special">&lt;PageUp&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move window one page up&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<PageUp>" name="i_&lt;PageUp&gt;">i_&lt;PageUp&gt;</a><br>
<span class="Special">&lt;S-Down&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move window one page down&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<S-Down>" name="i_&lt;S-Down&gt;">i_&lt;S-Down&gt;</a><br>
<span class="Special">&lt;PageDown&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move window one page down&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<PageDown>" name="i_&lt;PageDown&gt;">i_&lt;PageDown&gt;</a><br>
<span class="Special">&lt;ScrollWheelDown&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;move window three lines down&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<ScrollWheelDown>" name="i_&lt;ScrollWheelDown&gt;">i_&lt;ScrollWheelDown&gt;</a><br>
<span class="Special">&lt;S-ScrollWheelDown&gt;</span>&nbsp;&nbsp;move window one page down&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<S-ScrollWheelDown>" name="i_&lt;S-ScrollWheelDown&gt;">i_&lt;S-ScrollWheelDown&gt;</a><br>
<span class="Special">&lt;ScrollWheelUp&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;move window three lines up&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<ScrollWheelUp>" name="i_&lt;ScrollWheelUp&gt;">i_&lt;ScrollWheelUp&gt;</a><br>
<span class="Special">&lt;S-ScrollWheelUp&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;move window one page up&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<S-ScrollWheelUp>" name="i_&lt;S-ScrollWheelUp&gt;">i_&lt;S-ScrollWheelUp&gt;</a><br>
<span class="Special">&lt;ScrollWheelLeft&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;move window six columns left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<ScrollWheelLeft>" name="i_&lt;ScrollWheelLeft&gt;">i_&lt;ScrollWheelLeft&gt;</a><br>
<span class="Special">&lt;S-ScrollWheelLeft&gt;</span>&nbsp;&nbsp;move window one page left&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<S-ScrollWheelLeft>" name="i_&lt;S-ScrollWheelLeft&gt;">i_&lt;S-ScrollWheelLeft&gt;</a><br>
<span class="Special">&lt;ScrollWheelRight&gt;</span>&nbsp;&nbsp; move window six columns right&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<ScrollWheelRight>" name="i_&lt;ScrollWheelRight&gt;">i_&lt;ScrollWheelRight&gt;</a><br>
<span class="Special">&lt;S-ScrollWheelRight&gt;</span>&nbsp;move window one page right&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_<S-ScrollWheelRight>" name="i_&lt;S-ScrollWheelRight&gt;">i_&lt;S-ScrollWheelRight&gt;</a><br>
<span class="Special">CTRL-O</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;execute one command, return to Insert mode&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-O" name="i_CTRL-O">i_CTRL-O</a><br>
<span class="Special">CTRL-\</span>&nbsp;<span class="Special">CTRL-O</span>&nbsp;&nbsp; like&nbsp;<span class="Special">CTRL-O</span>&nbsp;but don't move the cursor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-\_CTRL-O" name="i_CTRL-\_CTRL-O">i_CTRL-\_CTRL-O</a><br>
<span class="Special">CTRL-L</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when&nbsp;<a class="Type" href="options.html#'insertmode'">'insertmode'</a>&nbsp;is set: go to Normal mode&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-L" name="i_CTRL-L">i_CTRL-L</a><br>
<span class="Special">CTRL-G</span>&nbsp;u&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break undo sequence, start new change&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-G_u" name="i_CTRL-G_u">i_CTRL-G_u</a><br>
<span class="Special">CTRL-G</span>&nbsp;U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;don't break undo with next left/right cursor&nbsp;<a class="Constant" href="insert.html#i_CTRL-G_U" name="i_CTRL-G_U">i_CTRL-G_U</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movement (but only if the cursor stays<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;within same the line)<br>
<span class="PreProc">-----------------------------------------------------------------------</span><br>
<br>
<span class="Todo">Note</span>: If the cursor keys take you out of Insert mode, check the&nbsp;<a class="Type" href="options.html#'noesckeys'">'noesckeys'</a><br>
option.<br>
<br>
The&nbsp;<span class="Special">CTRL-O</span>&nbsp;command sometimes has a side effect: If the cursor was beyond the<br>
end of the line, it will be put on the last character in the line.&nbsp;&nbsp;In<br>
mappings it's often better to use&nbsp;<span class="Special">&lt;Esc&gt;</span>&nbsp;(first put an &quot;x&quot; in the text,&nbsp;<span class="Special">&lt;Esc&gt;</span><br>
will then always put the cursor on it).&nbsp;&nbsp;Or use&nbsp;<span class="Special">CTRL-\</span>&nbsp;<span class="Special">CTRL-O</span>, but then<br>
beware of the cursor possibly being beyond the end of the line.&nbsp;&nbsp;<span class="Todo">Note</span>&nbsp;that the<br>
command following&nbsp;<span class="Special">CTRL-\</span>&nbsp;<span class="Special">CTRL-O</span>&nbsp;can still move the cursor, it is not restored<br>
to its original position.<br>
<br>
The&nbsp;<span class="Special">CTRL-O</span>&nbsp;command takes you to Normal mode.&nbsp;&nbsp;If you then use a command enter<br>
Insert mode again it normally doesn't nest.&nbsp;&nbsp;Thus when typing &quot;a<span class="Special">&lt;C-O&gt;</span>a&quot; and<br>
then&nbsp;<span class="Special">&lt;Esc&gt;</span>&nbsp;takes you back to Normal mode, you do not need to type&nbsp;<span class="Special">&lt;Esc&gt;</span>&nbsp;twice.<br>
An exception is when not typing the command, e.g. when executing a mapping or<br>
sourcing a script.&nbsp;&nbsp;This makes mappings work that briefly switch to Insert<br>
mode.<br>
<br>
The shifted cursor keys are not available on all terminals.<br>
<br>
Another side effect is that a count specified before the &quot;i&quot; or &quot;a&quot; command is<br>
ignored.&nbsp;&nbsp;That is because repeating the effect of the command after&nbsp;<span class="Special">CTRL-O</span>&nbsp;is<br>
too complicated.<br>
<br>
An example for using&nbsp;<span class="Special">CTRL-G</span>&nbsp;u:<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:inoremap &lt;C-H&gt; &lt;C-G&gt;u&lt;C-H&gt;</div>
<br>
This redefines the backspace key to start a new undo sequence.&nbsp;&nbsp;You can now<br>
undo the effect of the backspace key, without changing what you typed before<br>
that, with&nbsp;<span class="Special">CTRL-O</span>&nbsp;u.&nbsp;&nbsp;Another example:<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:inoremap &lt;CR&gt; &lt;C-]&gt;&lt;C-G&gt;u&lt;CR&gt;</div>
<br>
This breaks undo at each line break.&nbsp;&nbsp;It also expands abbreviations before<br>
this.<br>
<br>
An example for using&nbsp;<span class="Special">CTRL-G</span>&nbsp;U:<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inoremap &lt;Left&gt;&nbsp;&nbsp;&lt;C-G&gt;U&lt;Left&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inoremap &lt;Right&gt; &lt;C-G&gt;U&lt;Right&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inoremap &lt;expr&gt; &lt;Home&gt; col('.') == match(getline('.'), '\S') + 1 ?<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ repeat('&lt;C-G&gt;U&lt;Left&gt;', col('.') - 1) :<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \ (col('.') &lt; match(getline('.'), '\S') ?<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp; repeat('&lt;C-G&gt;U&lt;Right&gt;', match(getline('.'), '\S') + 0) :<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \&nbsp;&nbsp;&nbsp;&nbsp; repeat('&lt;C-G&gt;U&lt;Left&gt;', col('.') - 1 - match(getline('.'), '\S')))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inoremap &lt;expr&gt; &lt;End&gt; repeat('&lt;C-G&gt;U&lt;Right&gt;', col('$') - col('.'))<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inoremap ( ()&lt;C-G&gt;U&lt;Left&gt;</div>
<br>
This makes it possible to use the cursor keys in Insert mode, without breaking<br>
the undo sequence and therefore using&nbsp;<a class="Identifier" href="repeat.html#.">.</a>&nbsp;(redo) will work as expected.&nbsp;<br>
Also entering a text like (with the &quot;(&quot; mapping from above):<br>
<br>
<div class="helpExample">&nbsp;&nbsp; Lorem ipsum (dolor</div>
<br>
will be repeatable by the&nbsp;<a class="Identifier" href="repeat.html#.">.</a>to the expected<br>
<br>
&nbsp;&nbsp; Lorem ipsum (dolor)<br>
<br>
Using&nbsp;<span class="Special">CTRL-O</span>&nbsp;splits undo: the text typed before and after it is undone<br>
separately.&nbsp;&nbsp;If you want to avoid this (e.g., in a mapping) you might be able<br>
to use&nbsp;<span class="Special">CTRL-R</span>&nbsp;=&nbsp;<a class="Identifier" href="insert.html#i_CTRL-R">i_CTRL-R</a>.&nbsp;&nbsp;E.g., to call a function:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:imap &lt;F2&gt; &lt;C-R&gt;=MyFunc()&lt;CR&gt;</div>
<br>
When the&nbsp;<a class="Type" href="options.html#'whichwrap'">'whichwrap'</a>&nbsp;option is set appropriately, the&nbsp;<span class="Special">&lt;Left&gt;</span>&nbsp;and&nbsp;<span class="Special">&lt;Right&gt;</span><br>
keys on the first/last character in the line make the cursor wrap to the<br>
previous/next line.<br>
<br>
The&nbsp;<span class="Special">CTRL-G</span>&nbsp;j and&nbsp;<span class="Special">CTRL-G</span>&nbsp;k commands can be used to insert text in front of a<br>
column.&nbsp;&nbsp;Example:<br>
<div class="helpExample">&nbsp;&nbsp; int i;<br>
&nbsp;&nbsp; int j;</div>
Position the cursor on the first &quot;int&quot;, type &quot;istatic&nbsp;<span class="Special">&lt;C-G&gt;</span>j&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;.&nbsp;&nbsp;The<br>
result is:<br>
<div class="helpExample">&nbsp;&nbsp; static int i;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int j;</div>
When inserting the same text in front of the column in every line, use the<br>
Visual blockwise command &quot;I&quot;&nbsp;<a class="Identifier" href="visual.html#v_b_I">v_b_I</a>.<br>
<br>
<span class="PreProc">==============================================================================</span><br>
3.&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;and&nbsp;<a class="Type" href="options.html#'wrapmargin'">'wrapmargin'</a>&nbsp;options&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#ins-textwidth" name="ins-textwidth">ins-textwidth</a><br>
<br>
The&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;option can be used to automatically break a line before it<br>
gets too long.&nbsp;&nbsp;Set the&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;option to the desired maximum line<br>
length.&nbsp;&nbsp;If you then type more characters (not spaces or tabs), the<br>
last word will be put on a new line (unless it is the only word on the<br>
line).&nbsp;&nbsp;If you set&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;to 0, this feature is disabled.<br>
<br>
The&nbsp;<a class="Type" href="options.html#'wrapmargin'">'wrapmargin'</a>&nbsp;option does almost the same.&nbsp;&nbsp;The difference is that<br>
<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;has a fixed width while&nbsp;<a class="Type" href="options.html#'wrapmargin'">'wrapmargin'</a>&nbsp;depends on the width of the<br>
screen.&nbsp;&nbsp;When using&nbsp;<a class="Type" href="options.html#'wrapmargin'">'wrapmargin'</a>&nbsp;this is equal to using&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;with a<br>
value equal to (columns -&nbsp;<a class="Type" href="options.html#'wrapmargin'">'wrapmargin'</a>), where columns is the width of the<br>
screen.<br>
<br>
When&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;and&nbsp;<a class="Type" href="options.html#'wrapmargin'">'wrapmargin'</a>&nbsp;are both set,&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;is used.<br>
<br>
If you don't really want to break the line, but view the line wrapped at a<br>
convenient place, see the&nbsp;<a class="Type" href="options.html#'linebreak'">'linebreak'</a>&nbsp;option.<br>
<br>
The line is only broken automatically when using Insert mode, or when<br>
appending to a line.&nbsp;&nbsp;When in replace mode and the line length is not<br>
changed, the line will not be broken.<br>
<br>
Long lines are broken if you enter a non-white character after the margin.<br>
The situations where a line will be broken can be restricted by adding<br>
characters to the&nbsp;<a class="Type" href="options.html#'formatoptions'">'formatoptions'</a>&nbsp;option:<br>
&quot;l&quot;&nbsp;&nbsp;Only break a line if it was not longer than&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;when the insert<br>
&nbsp;&nbsp;&nbsp;&nbsp; started.<br>
&quot;v&quot;&nbsp;&nbsp;Only break at a white character that has been entered during the<br>
&nbsp;&nbsp;&nbsp;&nbsp; current insert command.&nbsp;&nbsp;This is mostly Vi-compatible.<br>
&quot;lv&quot; Only break if the line was not longer than&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;when the insert<br>
&nbsp;&nbsp;&nbsp;&nbsp; started and only at a white character that has been entered during the<br>
&nbsp;&nbsp;&nbsp;&nbsp; current insert command.&nbsp;&nbsp;Only differs from &quot;l&quot; when entering non-white<br>
&nbsp;&nbsp;&nbsp;&nbsp; characters while crossing the&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;boundary.<br>
<br>
Normally an internal function will be used to decide where to break the line.<br>
If you want to do it in a different way set the&nbsp;<a class="Type" href="options.html#'formatexpr'">'formatexpr'</a>&nbsp;option to an<br>
expression that will take care of the line break.<br>
<br>
If you want to format a block of text, you can use the &quot;gq&quot; operator.&nbsp;&nbsp;Type<br>
&quot;gq&quot; and a movement command to move the cursor to the end of the block.&nbsp;&nbsp;In<br>
many cases, the command &quot;gq}&quot; will do what you want (format until the end of<br>
paragraph).&nbsp;&nbsp;Alternatively, you can use &quot;gqap&quot;, which will format the whole<br>
paragraph, no matter where the cursor currently is.&nbsp;&nbsp;Or you can use Visual<br>
mode: hit &quot;v&quot;, move to the end of the block, and type &quot;gq&quot;.&nbsp;&nbsp;See also&nbsp;<a class="Identifier" href="change.html#gq">gq</a>.<br>
<br>
<span class="PreProc">==============================================================================</span><br>
4.&nbsp;<a class="Type" href="options.html#'expandtab'">'expandtab'</a>,&nbsp;<a class="Type" href="options.html#'smarttab'">'smarttab'</a>&nbsp;and&nbsp;<a class="Type" href="options.html#'softtabstop'">'softtabstop'</a>&nbsp;options&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#ins-expandtab" name="ins-expandtab">ins-expandtab</a><br>
<br>
If the&nbsp;<a class="Type" href="options.html#'expandtab'">'expandtab'</a>&nbsp;option is on, spaces will be used to fill the amount of<br>
whitespace of the tab.&nbsp;&nbsp;If you want to enter a real&nbsp;<span class="Special">&lt;Tab&gt;</span>, type&nbsp;<span class="Special">CTRL-V</span>&nbsp;first<br>
(use&nbsp;<span class="Special">CTRL-Q</span>&nbsp;when&nbsp;<span class="Special">CTRL-V</span>&nbsp;is mapped&nbsp;<a class="Identifier" href="insert.html#i_CTRL-Q">i_CTRL-Q</a>).<br>
The&nbsp;<a class="Type" href="options.html#'expandtab'">'expandtab'</a>&nbsp;option is off by default.&nbsp;&nbsp;<span class="Todo">Note</span>&nbsp;that in Replace mode, a single<br>
character is replaced with several spaces.&nbsp;&nbsp;The result of this is that the<br>
number of characters in the line increases.&nbsp;&nbsp;Backspacing will delete one<br>
space at a time.&nbsp;&nbsp;The original character will be put back for only one space<br>
that you backspace over (the last one).&nbsp;&nbsp;<span class="Special">{Vi does not have the 'expandtab'</span><br>
<span class="Special">option}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#ins-smarttab" name="ins-smarttab">ins-smarttab</a><br>
When the&nbsp;<a class="Type" href="options.html#'smarttab'">'smarttab'</a>&nbsp;option is on, a&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;inserts&nbsp;<a class="Type" href="options.html#'shiftwidth'">'shiftwidth'</a>&nbsp;positions at<br>
the beginning of a line and&nbsp;<a class="Type" href="options.html#'tabstop'">'tabstop'</a>&nbsp;positions in other places.&nbsp;&nbsp;This means<br>
that often spaces instead of a&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;character are inserted.&nbsp;&nbsp;When&nbsp;<a class="Type" href="options.html#'smarttab'">'smarttab'</a><br>
is off, a&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;always inserts&nbsp;<a class="Type" href="options.html#'tabstop'">'tabstop'</a>&nbsp;positions, and&nbsp;<a class="Type" href="options.html#'shiftwidth'">'shiftwidth'</a>&nbsp;is only<br>
used for &quot;&gt;&gt;&quot; and the like.&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#ins-softtabstop" name="ins-softtabstop">ins-softtabstop</a><br>
When the&nbsp;<a class="Type" href="options.html#'softtabstop'">'softtabstop'</a>&nbsp;option is non-zero, a&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;inserts&nbsp;<a class="Type" href="options.html#'softtabstop'">'softtabstop'</a><br>
positions, and a&nbsp;<span class="Special">&lt;BS&gt;</span>&nbsp;used to delete white space, will delete&nbsp;<a class="Type" href="options.html#'softtabstop'">'softtabstop'</a><br>
positions.&nbsp;&nbsp;This feels like&nbsp;<a class="Type" href="options.html#'tabstop'">'tabstop'</a>&nbsp;was set to&nbsp;<a class="Type" href="options.html#'softtabstop'">'softtabstop'</a>, but a real<br>
<span class="Special">&lt;Tab&gt;</span>&nbsp;character still takes&nbsp;<a class="Type" href="options.html#'tabstop'">'tabstop'</a>&nbsp;positions, so your file will still look<br>
correct when used by other applications.<br>
<br>
If&nbsp;<a class="Type" href="options.html#'softtabstop'">'softtabstop'</a>&nbsp;is non-zero, a&nbsp;<span class="Special">&lt;BS&gt;</span>&nbsp;will try to delete as much white space to<br>
move to the previous&nbsp;<a class="Type" href="options.html#'softtabstop'">'softtabstop'</a>&nbsp;position, except when the previously<br>
inserted character is a space, then it will only delete the character before<br>
the cursor.&nbsp;&nbsp;Otherwise you cannot always delete a single character before the<br>
cursor.&nbsp;&nbsp;You will have to delete&nbsp;<a class="Type" href="options.html#'softtabstop'">'softtabstop'</a>&nbsp;characters first, and then type<br>
extra spaces to get where you want to be.<br>
<br>
<span class="PreProc">==============================================================================</span><br>
5. Replace mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#Replace" name="Replace">Replace</a>&nbsp;<a class="Constant" href="insert.html#Replace-mode" name="Replace-mode">Replace-mode</a>&nbsp;<a class="Constant" href="insert.html#mode-replace" name="mode-replace">mode-replace</a><br>
<br>
Enter Replace mode with the &quot;R&quot; command in normal mode.<br>
<br>
In Replace mode, one character in the line is deleted for every character you<br>
type.&nbsp;&nbsp;If there is no character to delete (at the end of the line), the<br>
typed character is appended (as in Insert mode).&nbsp;&nbsp;Thus the number of<br>
characters in a line stays the same until you get to the end of the line.<br>
If a&nbsp;<span class="Special">&lt;NL&gt;</span>&nbsp;is typed, a line break is inserted and no character is deleted.<br>
<br>
Be careful with&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;characters.&nbsp;&nbsp;If you type a normal printing character in<br>
its place, the number of characters is still the same, but the number of<br>
columns will become smaller.<br>
<br>
If you delete characters in Replace mode (with&nbsp;<span class="Special">&lt;BS&gt;</span>,&nbsp;<span class="Special">CTRL-W</span>, or&nbsp;<span class="Special">CTRL-U</span>), what<br>
happens is that you delete the changes.&nbsp;&nbsp;The characters that were replaced<br>
are restored.&nbsp;&nbsp;If you had typed past the existing text, the characters you<br>
added are deleted.&nbsp;&nbsp;This is effectively a character-at-a-time undo.<br>
<br>
If the&nbsp;<a class="Type" href="options.html#'expandtab'">'expandtab'</a>&nbsp;option is on, a&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;will replace one character with<br>
several spaces.&nbsp;&nbsp;The result of this is that the number of characters in the<br>
line increases.&nbsp;&nbsp;Backspacing will delete one space at a time.&nbsp;&nbsp;The original<br>
character will be put back for only one space that you backspace over (the<br>
last one).&nbsp;&nbsp;<span class="Special">{Vi does not have the 'expandtab' option}</span><br>
<br>
<span class="PreProc">==============================================================================</span><br>
6. Virtual Replace mode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#vreplace-mode" name="vreplace-mode">vreplace-mode</a>&nbsp;<a class="Constant" href="insert.html#Virtual-Replace-mode" name="Virtual-Replace-mode">Virtual-Replace-mode</a><br>
<br>
Enter Virtual Replace mode with the &quot;gR&quot; command in normal mode.<br>
<span class="Special">{not available when compiled without the&nbsp;</span><a class="Identifier" href="various.html#+vreplace">+vreplace</a><span class="Special">&nbsp;feature}</span><br>
<span class="Special">{Vi does not have Virtual Replace mode}</span><br>
<br>
Virtual Replace mode is similar to Replace mode, but instead of replacing<br>
actual characters in the file, you are replacing screen real estate, so that<br>
characters further on in the file never appear to move.<br>
<br>
So if you type a&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;it may replace several normal characters, and if you<br>
type a letter on top of a&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;it may not replace anything at all, since the<br>
<span class="Special">&lt;Tab&gt;</span>&nbsp;will still line up to the same place as before.<br>
<br>
Typing a&nbsp;<span class="Special">&lt;NL&gt;</span>&nbsp;still doesn't cause characters later in the file to appear to<br>
move.&nbsp;&nbsp;The rest of the current line will be replaced by the&nbsp;<span class="Special">&lt;NL&gt;</span>&nbsp;(that is,<br>
they are deleted), and replacing continues on the next line.&nbsp;&nbsp;A new line is<br>
NOT inserted unless you go past the end of the file.<br>
<br>
Interesting effects are seen when using&nbsp;<span class="Special">CTRL-T</span>&nbsp;and&nbsp;<span class="Special">CTRL-D</span>.&nbsp;&nbsp;The characters<br>
before the cursor are shifted sideways as normal, but characters later in the<br>
line still remain still.&nbsp;&nbsp;<span class="Special">CTRL-T</span>&nbsp;will hide some of the old line under the<br>
shifted characters, but&nbsp;<span class="Special">CTRL-D</span>&nbsp;will reveal them again.<br>
<br>
As with Replace mode, using&nbsp;<span class="Special">&lt;BS&gt;</span>&nbsp;etc will bring back the characters that were<br>
replaced.&nbsp;&nbsp;This still works in conjunction with&nbsp;<a class="Type" href="options.html#'smartindent'">'smartindent'</a>,&nbsp;<span class="Special">CTRL-T</span>&nbsp;and<br>
<span class="Special">CTRL-D</span>,&nbsp;<a class="Type" href="options.html#'expandtab'">'expandtab'</a>,&nbsp;<a class="Type" href="options.html#'smarttab'">'smarttab'</a>,&nbsp;<a class="Type" href="options.html#'softtabstop'">'softtabstop'</a>, etc.<br>
<br>
In&nbsp;<a class="Type" href="options.html#'list'">'list'</a>&nbsp;mode, Virtual Replace mode acts as if it was not in&nbsp;<a class="Type" href="options.html#'list'">'list'</a>&nbsp;mode,<br>
unless &quot;L&quot; is in&nbsp;<a class="Type" href="options.html#'cpoptions'">'cpoptions'</a>.<br>
<br>
<span class="Todo">Note</span>&nbsp;that the only situations for which characters beyond the cursor should<br>
appear to move are in List mode&nbsp;<a class="Identifier" href="options.html#'list'">'list'</a>, and occasionally when&nbsp;<a class="Type" href="options.html#'wrap'">'wrap'</a>&nbsp;is set<br>
(and the line changes length to become shorter or wider than the width of the<br>
screen).&nbsp;&nbsp;In other cases spaces may be inserted to avoid following characters<br>
to move.<br>
<br>
This mode is very useful for editing&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;separated columns in tables, for<br>
entering new data while keeping all the columns aligned.<br>
<br>
<span class="PreProc">==============================================================================</span><br>
7. Insert mode completion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#ins-completion" name="ins-completion">ins-completion</a><br>
<br>
In Insert and Replace mode, there are several commands to complete part of a<br>
keyword or line that has been typed.&nbsp;&nbsp;This is useful if you are using<br>
complicated keywords (e.g., function names with capitals and underscores).<br>
<br>
These commands are not available when the&nbsp;<a class="Identifier" href="various.html#+insert_expand">+insert_expand</a>&nbsp;feature was<br>
disabled at compile time.<br>
<br>
Completion can be done for:<br>
<br>
1. Whole lines&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_CTRL-L">i_CTRL-X_CTRL-L</a><br>
2. keywords in the current file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_CTRL-N">i_CTRL-X_CTRL-N</a><br>
3. keywords in&nbsp;<a class="Type" href="options.html#'dictionary'">'dictionary'</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_CTRL-K">i_CTRL-X_CTRL-K</a><br>
4. keywords in&nbsp;<a class="Type" href="options.html#'thesaurus'">'thesaurus'</a>, thesaurus-style&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_CTRL-T">i_CTRL-X_CTRL-T</a><br>
5. keywords in the current and included files&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_CTRL-I">i_CTRL-X_CTRL-I</a><br>
6. tags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_CTRL-]">i_CTRL-X_CTRL-]</a><br>
7. file names&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_CTRL-F">i_CTRL-X_CTRL-F</a><br>
8. definitions or macros&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_CTRL-D">i_CTRL-X_CTRL-D</a><br>
9. Vim command-line&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_CTRL-V">i_CTRL-X_CTRL-V</a><br>
10. User defined completion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_CTRL-U">i_CTRL-X_CTRL-U</a><br>
11. omni completion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_CTRL-O">i_CTRL-X_CTRL-O</a><br>
12. Spelling suggestions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-X_s">i_CTRL-X_s</a><br>
13. keywords in&nbsp;<a class="Type" href="options.html#'complete'">'complete'</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Identifier" href="insert.html#i_CTRL-N">i_CTRL-N</a>&nbsp;<a class="Identifier" href="insert.html#i_CTRL-P">i_CTRL-P</a><br>
<br>
All these, except&nbsp;<span class="Special">CTRL-N</span>&nbsp;and&nbsp;<span class="Special">CTRL-P</span>, are done in&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode.&nbsp;&nbsp;This is a<br>
sub-mode of Insert and Replace modes.&nbsp;&nbsp;You enter&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode by typing&nbsp;<span class="Special">CTRL-X</span><br>
and one of the&nbsp;<span class="Special">CTRL-X</span>&nbsp;commands.&nbsp;&nbsp;You exit&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode by typing a key that is<br>
not a valid&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode command.&nbsp;&nbsp;Valid keys are the&nbsp;<span class="Special">CTRL-X</span>&nbsp;command itself,<br>
<span class="Special">CTRL-N</span>&nbsp;(next), and&nbsp;<span class="Special">CTRL-P</span>&nbsp;(previous).<br>
<br>
Also see the&nbsp;<a class="Type" href="options.html#'infercase'">'infercase'</a>&nbsp;option if you want to adjust the case of the match.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#complete_CTRL-E" name="complete_CTRL-E">complete_CTRL-E</a><br>
When completion is active you can use&nbsp;<span class="Special">CTRL-E</span>&nbsp;to stop it and go back to the<br>
originally typed text.&nbsp;&nbsp;The&nbsp;<span class="Special">CTRL-E</span>&nbsp;will not be inserted.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#complete_CTRL-Y" name="complete_CTRL-Y">complete_CTRL-Y</a><br>
When the popup menu is displayed you can use&nbsp;<span class="Special">CTRL-Y</span>&nbsp;to stop completion and<br>
accept the currently selected entry.&nbsp;&nbsp;The&nbsp;<span class="Special">CTRL-Y</span>&nbsp;is not inserted.&nbsp;&nbsp;Typing a<br>
space, Enter, or some other unprintable character will leave completion mode<br>
and insert that typed character.<br>
<br>
When the popup menu is displayed there are a few more special keys, see<br>
<a class="Identifier" href="insert.html#popupmenu-keys">popupmenu-keys</a>.<br>
<br>
<span class="Todo">Note</span>: The keys that are valid in&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode are not mapped.&nbsp;&nbsp;This allows for<br>
&quot;:map ^F ^X^F&quot; to work (where ^F is&nbsp;<span class="Special">CTRL-F</span>&nbsp;and ^X is&nbsp;<span class="Special">CTRL-X</span>).&nbsp;&nbsp;The key that<br>
ends&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode (any key that is not a valid&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode command) is mapped.<br>
Also, when doing completion with&nbsp;<a class="Type" href="options.html#'complete'">'complete'</a>&nbsp;mappings apply as usual.<br>
<br>
<span class="Todo">Note</span>: While completion is active Insert mode can't be used recursively.<br>
Mappings that somehow invoke &quot;:normal i..&quot; will generate an E523 error.<br>
<br>
The following mappings are suggested to make typing the completion commands<br>
a bit easier (although they will hide other commands):<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;:inoremap ^] ^X^]<br>
&nbsp;&nbsp;&nbsp;&nbsp;:inoremap ^F ^X^F<br>
&nbsp;&nbsp;&nbsp;&nbsp;:inoremap ^D ^X^D<br>
&nbsp;&nbsp;&nbsp;&nbsp;:inoremap ^L ^X^L</div>
<br>
As a special case, typing&nbsp;<span class="Special">CTRL-R</span>&nbsp;to perform register insertion (see<br>
<a class="Identifier" href="insert.html#i_CTRL-R">i_CTRL-R</a>) will not exit&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode.&nbsp;&nbsp;This is primarily to allow the use of<br>
the '=' register to call some function to determine the next operation.&nbsp;&nbsp;If<br>
the contents of the register (or result of the '=' register evaluation) are<br>
not valid&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode keys, then&nbsp;<span class="Special">CTRL-X</span>&nbsp;mode will be exited as if those keys<br>
had been typed.<br>
<br>
For example, the following will map&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;to either actually insert a&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;if<br>
the current line is currently only whitespace, or start/continue a&nbsp;<span class="Special">CTRL-N</span><br>
completion operation:<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;function! CleverTab()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if strpart( getline('.'), 0, col('.')-1 ) =~ '^\s*$'<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;\&lt;Tab&gt;&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;\&lt;C-N&gt;&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endfunction<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inoremap &lt;Tab&gt; &lt;C-R&gt;=CleverTab()&lt;CR&gt;</div>
<br>
<br>
<br>
Completing whole lines&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-whole-line" name="compl-whole-line">compl-whole-line</a><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-L" name="i_CTRL-X_CTRL-L">i_CTRL-X_CTRL-L</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-L</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Search backwards for a line that starts with the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;same characters as those in the current line before<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the cursor.&nbsp;&nbsp;Indent is ignored.&nbsp;&nbsp;The matching line is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inserted in front of the cursor.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;<a class="Type" href="options.html#'complete'">'complete'</a>&nbsp;option is used to decide which buffers<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;are searched for a match.&nbsp;&nbsp;Both loaded and unloaded<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffers are used.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-L</span>&nbsp;&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search backwards for next matching line.&nbsp;&nbsp;This line<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replaces the previous matching line.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search forward for next matching line.&nbsp;&nbsp;This line<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replaces the previous matching line.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-L</span>&nbsp;&nbsp; After expanding a line you can additionally get the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line next to it by typing&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-L</span>&nbsp;again, unless<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a double&nbsp;<span class="Special">CTRL-X</span>&nbsp;is used.&nbsp;&nbsp;Only works for loaded<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffers.<br>
<br>
Completing keywords in current file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-current" name="compl-current">compl-current</a><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-P" name="i_CTRL-X_CTRL-P">i_CTRL-X_CTRL-P</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-N" name="i_CTRL-X_CTRL-N">i_CTRL-X_CTRL-N</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Search forwards for words that start with the keyword<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in front of the cursor.&nbsp;&nbsp;The found keyword is inserted<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in front of the cursor.<br>
<br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Search backwards for words that start with the keyword<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in front of the cursor.&nbsp;&nbsp;The found keyword is inserted<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in front of the cursor.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search forward for next matching keyword.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword replaces the previous matching keyword.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search backwards for next matching keyword.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword replaces the previous matching keyword.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-N</span>&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp; Further use of&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-N</span>&nbsp;or&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-P</span>&nbsp;will<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy the words following the previous expansion in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;other contexts unless a double&nbsp;<span class="Special">CTRL-X</span>&nbsp;is used.<br>
<br>
If there is a keyword in front of the cursor (a name made out of alphabetic<br>
characters and characters in&nbsp;<a class="Type" href="options.html#'iskeyword'">'iskeyword'</a>), it is used as the search pattern,<br>
with &quot;\&lt;&quot; prepended (meaning: start of a word).&nbsp;&nbsp;Otherwise &quot;\&lt;\k\k&quot; is used<br>
as search pattern (start of any keyword of at least two characters).<br>
<br>
In Replace mode, the number of characters that are replaced depends on the<br>
length of the matched string.&nbsp;&nbsp;This works like typing the characters of the<br>
matched string in Replace mode.<br>
<br>
If there is not a valid keyword character before the cursor, any keyword of<br>
at least two characters is matched.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.g., to get:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;(%g, %g, %g)&quot;, vector[0], vector[1], vector[2]);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;just type:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;(%g, %g, %g)&quot;, vector[0], ^P[1], ^P[2]);<br>
<br>
The search wraps around the end of the file, the value of&nbsp;<a class="Type" href="options.html#'wrapscan'">'wrapscan'</a>&nbsp;is not<br>
used here.<br>
<br>
Multiple repeats of the same completion are skipped; thus a different match<br>
will be inserted at each&nbsp;<span class="Special">CTRL-N</span>&nbsp;and&nbsp;<span class="Special">CTRL-P</span>&nbsp;(unless there is only one<br>
matching keyword).<br>
<br>
Single character matches are never included, as they usually just get in<br>
the way of what you were really after.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.g., to get:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;name = %s\n&quot;, name);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;just type:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;name = %s\n&quot;, n^P);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or even:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;name = %s\n&quot;, ^P);<br>
The 'n' in '\n' is skipped.<br>
<br>
After expanding a word, you can use&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-P</span>&nbsp;or&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-N</span>&nbsp;to get the<br>
word following the expansion in other contexts.&nbsp;&nbsp;These sequences search for<br>
the text just expanded and further expand by getting an extra word.&nbsp;&nbsp;This is<br>
useful if you need to repeat a sequence of complicated words.&nbsp;&nbsp;Although&nbsp;<span class="Special">CTRL-P</span><br>
and&nbsp;<span class="Special">CTRL-N</span>&nbsp;look just for strings of at least two characters,&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-P</span>&nbsp;and<br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-N</span>&nbsp;can be used to expand words of just one character.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.g., to get:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M&amp;eacute;xico<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;you can type:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M^<span class="Special">N</span>^P^X^P^X^P<br>
<span class="Special">CTRL-N</span>&nbsp;starts the expansion and then&nbsp;<span class="Special">CTRL-P</span>&nbsp;takes back the single character<br>
&quot;M&quot;, the next two&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-P</span>'s get the words &quot;&amp;eacute&quot; and &quot;;xico&quot;.<br>
<br>
If the previous expansion was split, because it got longer than&nbsp;<a class="Type" href="options.html#'textwidth'">'textwidth'</a>,<br>
then just the text in the current line will be used.<br>
<br>
If the match found is at the end of a line, then the first word in the next<br>
line will be inserted and the message &quot;word from next line&quot; displayed, if<br>
this word is accepted the next&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-P</span>&nbsp;or&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-N</span>&nbsp;will search<br>
for those lines starting with this word.<br>
<br>
<br>
Completing keywords in&nbsp;<a class="Type" href="options.html#'dictionary'">'dictionary'</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-dictionary" name="compl-dictionary">compl-dictionary</a><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-K" name="i_CTRL-X_CTRL-K">i_CTRL-X_CTRL-K</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-K</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Search the files given with the&nbsp;<a class="Type" href="options.html#'dictionary'">'dictionary'</a>&nbsp;option<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for words that start with the keyword in front of the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor.&nbsp;&nbsp;This is like&nbsp;<span class="Special">CTRL-N</span>, but only the dictionary<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;files are searched, not the current file.&nbsp;&nbsp;The found<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword is inserted in front of the cursor.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;could potentially be pretty slow, since all matches<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;are found before the first match is used.&nbsp;&nbsp;By default,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;<a class="Type" href="options.html#'dictionary'">'dictionary'</a>&nbsp;option is empty.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For suggestions where to find a list of words, see the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Type" href="options.html#'dictionary'">'dictionary'</a>&nbsp;option.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-K</span>&nbsp;&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search forward for next matching keyword.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword replaces the previous matching keyword.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search backwards for next matching keyword.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword replaces the previous matching keyword.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-T" name="i_CTRL-X_CTRL-T">i_CTRL-X_CTRL-T</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-T</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Works as&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-K</span>, but in a special way.&nbsp;&nbsp;It uses<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;<a class="Type" href="options.html#'thesaurus'">'thesaurus'</a>&nbsp;option instead of&nbsp;<a class="Type" href="options.html#'dictionary'">'dictionary'</a>.&nbsp;&nbsp;If a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;match is found in the thesaurus file, all the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;remaining words on the same line are included as<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matches, even though they don't complete the word.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thus a word can be completely replaced.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;For an example, imagine the&nbsp;<a class="Type" href="options.html#'thesaurus'">'thesaurus'</a>&nbsp;file has a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line like this:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;angry furious mad enraged</div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Placing the cursor after the letters &quot;ang&quot; and typing<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-T</span>&nbsp;would complete the word &quot;angry&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subsequent presses would change the word to &quot;furious&quot;,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;mad&quot; etc.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Other uses include translation between two languages,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or grouping API functions by keyword.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-T</span>&nbsp;&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search forward for next matching keyword.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword replaces the previous matching keyword.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search backwards for next matching keyword.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword replaces the previous matching keyword.<br>
<br>
<br>
Completing keywords in the current and included files&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-keyword" name="compl-keyword">compl-keyword</a><br>
<br>
The&nbsp;<a class="Type" href="options.html#'include'">'include'</a>&nbsp;option is used to specify a line that contains an include file<br>
name.&nbsp;&nbsp;The&nbsp;<a class="Type" href="options.html#'path'">'path'</a>&nbsp;option is used to search for include files.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-I" name="i_CTRL-X_CTRL-I">i_CTRL-X_CTRL-I</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-I</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Search for the first keyword in the current and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;included files that starts with the same characters<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as those before the cursor.&nbsp;&nbsp;The matched keyword is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inserted in front of the cursor.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search forwards for next matching keyword.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword replaces the previous matching keyword.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Todo">Note</span>:&nbsp;<span class="Special">CTRL-I</span>&nbsp;is the same as&nbsp;<span class="Special">&lt;Tab&gt;</span>, which is likely to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be typed after a successful completion, therefore<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-I</span>&nbsp;is not used for searching for the next match.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search backward for previous matching keyword.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword replaces the previous matching keyword.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-I</span>&nbsp;&nbsp; Further use of&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-I</span>&nbsp;will copy the words<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;following the previous expansion in other contexts<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless a double&nbsp;<span class="Special">CTRL-X</span>&nbsp;is used.<br>
<br>
Completing tags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-tag" name="compl-tag">compl-tag</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-]" name="i_CTRL-X_CTRL-]">i_CTRL-X_CTRL-]</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Search for the first tag that starts with the same<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;characters as before the cursor.&nbsp;&nbsp;The matching tag is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inserted in front of the cursor.&nbsp;&nbsp;Alphabetic<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;characters and characters in&nbsp;<a class="Type" href="options.html#'iskeyword'">'iskeyword'</a>&nbsp;are used<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to decide which characters are included in the tag<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name (same as for a keyword).&nbsp;&nbsp;See also&nbsp;<a class="Identifier" href="tagsrch.html#CTRL-]">CTRL-]</a>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;<a class="Type" href="options.html#'showfulltag'">'showfulltag'</a>&nbsp;option can be used to add context<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from around the tag definition.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-]</span>&nbsp;&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search forwards for next matching tag.&nbsp;&nbsp;This tag<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replaces the previous matching tag.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search backward for previous matching tag.&nbsp;&nbsp;This tag<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replaces the previous matching tag.<br>
<br>
<br>
Completing file names&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-filename" name="compl-filename">compl-filename</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-F" name="i_CTRL-X_CTRL-F">i_CTRL-X_CTRL-F</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-F</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Search for the first file name that starts with the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;same characters as before the cursor.&nbsp;&nbsp;The matching<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file name is inserted in front of the cursor.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alphabetic characters and characters in&nbsp;<a class="Type" href="options.html#'isfname'">'isfname'</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;are used to decide which characters are included in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the file name.&nbsp;&nbsp;<span class="Todo">Note</span>: the&nbsp;<a class="Type" href="options.html#'path'">'path'</a>&nbsp;option is not used<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;here (yet).<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-F</span>&nbsp;&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search forwards for next matching file name.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file name replaces the previous matching file name.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search backward for previous matching file name.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This file name replaces the previous matching file<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name.<br>
<br>
<br>
Completing definitions or macros&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-define" name="compl-define">compl-define</a><br>
<br>
The&nbsp;<a class="Type" href="options.html#'define'">'define'</a>&nbsp;option is used to specify a line that contains a definition.<br>
The&nbsp;<a class="Type" href="options.html#'include'">'include'</a>&nbsp;option is used to specify a line that contains an include file<br>
name.&nbsp;&nbsp;The&nbsp;<a class="Type" href="options.html#'path'">'path'</a>&nbsp;option is used to search for include files.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-D" name="i_CTRL-X_CTRL-D">i_CTRL-X_CTRL-D</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-D</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Search in the current and included files for the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;first definition (or macro) name that starts with<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the same characters as before the cursor.&nbsp;&nbsp;The found<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;definition name is inserted in front of the cursor.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-D</span>&nbsp;&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search forwards for next matching macro name.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;macro name replaces the previous matching macro<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search backward for previous matching macro name.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This macro name replaces the previous matching macro<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-D</span>&nbsp;&nbsp; Further use of&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-D</span>&nbsp;will copy the words<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;following the previous expansion in other contexts<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unless a double&nbsp;<span class="Special">CTRL-X</span>&nbsp;is used.<br>
<br>
<br>
Completing Vim commands&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-vim" name="compl-vim">compl-vim</a><br>
<br>
Completion is context-sensitive.&nbsp;&nbsp;It works like on the Command-line.&nbsp;&nbsp;It<br>
completes an Ex command as well as its arguments.&nbsp;&nbsp;This is useful when writing<br>
a Vim script.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-V" name="i_CTRL-X_CTRL-V">i_CTRL-X_CTRL-V</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-V</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Guess what kind of item is in front of the cursor and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find the first match for it.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Todo">Note</span>: When&nbsp;<span class="Special">CTRL-V</span>&nbsp;is mapped you can often use&nbsp;<span class="Special">CTRL-Q</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instead of&nbsp;<a class="Identifier" href="insert.html#i_CTRL-Q">i_CTRL-Q</a>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-V</span>&nbsp;&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search forwards for next match.&nbsp;&nbsp;This match replaces<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the previous one.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search backwards for previous match.&nbsp;&nbsp;This match<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replaces the previous one.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-V</span>&nbsp;&nbsp; Further use of&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-V</span>&nbsp;will do the same as<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-V</span>.&nbsp;&nbsp;This allows mapping a key to do Vim command<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;completion, for example:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:imap &lt;Tab&gt; &lt;C-X&gt;&lt;C-V&gt;</div>
<br>
User defined completion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-function" name="compl-function">compl-function</a><br>
<br>
Completion is done by a function that can be defined by the user with the<br>
<a class="Type" href="options.html#'completefunc'">'completefunc'</a>&nbsp;option.&nbsp;&nbsp;See below for how the function is called and an<br>
example&nbsp;<a class="Identifier" href="insert.html#complete-functions">complete-functions</a>.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-U" name="i_CTRL-X_CTRL-U">i_CTRL-X_CTRL-U</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-U</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Guess what kind of item is in front of the cursor and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find the first match for it.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-U</span>&nbsp;&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use the next match.&nbsp;&nbsp;This match replaces the previous<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;one.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use the previous match.&nbsp;&nbsp;This match replaces the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;previous one.<br>
<br>
<br>
Omni completion&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-omni" name="compl-omni">compl-omni</a><br>
<br>
Completion is done by a function that can be defined by the user with the<br>
<a class="Type" href="options.html#'omnifunc'">'omnifunc'</a>&nbsp;option.&nbsp;&nbsp;This is to be used for filetype-specific completion.<br>
<br>
See below for how the function is called and an example&nbsp;<a class="Identifier" href="insert.html#complete-functions">complete-functions</a>.<br>
For remarks about specific filetypes see&nbsp;<a class="Identifier" href="insert.html#compl-omni-filetypes">compl-omni-filetypes</a>.<br>
More completion scripts will appear, check&nbsp;<span class="Constant">www.vim.org</span>.&nbsp;&nbsp;Currently there is a<br>
first version for C++.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-O" name="i_CTRL-X_CTRL-O">i_CTRL-X_CTRL-O</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-O</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Guess what kind of item is in front of the cursor and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;find the first match for it.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-O</span>&nbsp;&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use the next match.&nbsp;&nbsp;This match replaces the previous<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;one.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use the previous match.&nbsp;&nbsp;This match replaces the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;previous one.<br>
<br>
<br>
Spelling suggestions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-spelling" name="compl-spelling">compl-spelling</a><br>
<br>
A word before or at the cursor is located and correctly spelled words are<br>
suggested to replace it.&nbsp;&nbsp;If there is a badly spelled word in the line, before<br>
or under the cursor, the cursor is moved to after it.&nbsp;&nbsp;Otherwise the word just<br>
before the cursor is used for suggestions, even though it isn't badly spelled.<br>
<br>
<span class="Todo">NOTE</span>:&nbsp;<span class="Special">CTRL-S</span>&nbsp;suspends display in many Unix terminals.&nbsp;&nbsp;Use 's' instead.&nbsp;&nbsp;Type<br>
<span class="Special">CTRL-Q</span>&nbsp;to resume displaying.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_CTRL-S" name="i_CTRL-X_CTRL-S">i_CTRL-X_CTRL-S</a>&nbsp;<a class="Constant" href="insert.html#i_CTRL-X_s" name="i_CTRL-X_s">i_CTRL-X_s</a><br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-S</span>&nbsp;&nbsp; or<br>
<span class="Special">CTRL-X</span>&nbsp;s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Locate the word in front of the cursor and find the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;first spell suggestion for it.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-S</span>&nbsp;&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use the next suggestion.&nbsp;&nbsp;This replaces the previous<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;one.&nbsp;&nbsp;<span class="Todo">Note</span>&nbsp;that you can't use 's' here.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use the previous suggestion.&nbsp;&nbsp;This replaces the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;previous one.<br>
<br>
<br>
Completing keywords from different sources&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#compl-generic" name="compl-generic">compl-generic</a><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-N" name="i_CTRL-N">i_CTRL-N</a><br>
<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Find next match for words that start with the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword in front of the cursor, looking in places<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;specified with the&nbsp;<a class="Type" href="options.html#'complete'">'complete'</a>&nbsp;option.&nbsp;&nbsp;The found<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword is inserted in front of the cursor.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i_CTRL-P" name="i_CTRL-P">i_CTRL-P</a><br>
<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Find previous match for words that start with the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword in front of the cursor, looking in places<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;specified with the&nbsp;<a class="Type" href="options.html#'complete'">'complete'</a>&nbsp;option.&nbsp;&nbsp;The found<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword is inserted in front of the cursor.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-N</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search forward for next matching keyword.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword replaces the previous matching keyword.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Search backwards for next matching keyword.&nbsp;&nbsp;This<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword replaces the previous matching keyword.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-N</span>&nbsp;or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-P</span>&nbsp;&nbsp; Further use of&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-N</span>&nbsp;or&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-P</span>&nbsp;will<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy the words following the previous expansion in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;other contexts unless a double&nbsp;<span class="Special">CTRL-X</span>&nbsp;is used.<br>
<br>
<br>
<span class="Statement">FUNCTIONS FOR FINDING COMPLETIONS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#complete-functions" name="complete-functions">complete-functions</a><br>
<br>
This applies to&nbsp;<a class="Type" href="options.html#'completefunc'">'completefunc'</a>&nbsp;and&nbsp;<a class="Type" href="options.html#'omnifunc'">'omnifunc'</a>.<br>
<br>
The function is called in two different ways:<br>
- First the function is called to find the start of the text to be completed.<br>
- Later the function is called to actually find the matches.<br>
<br>
On the first invocation the arguments are:<br>
&nbsp;&nbsp; a:findstart&nbsp;&nbsp;1<br>
&nbsp;&nbsp; a:base&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; empty<br>
<br>
The function must return the column where the completion starts.&nbsp;&nbsp;It must be a<br>
number between zero and the cursor column &quot;col('.')&quot;.&nbsp;&nbsp;This involves looking<br>
at the characters just before the cursor and including those characters that<br>
could be part of the completed item.&nbsp;&nbsp;The text between this column and the<br>
cursor column will be replaced with the matches.<br>
<br>
Special return values:<br>
&nbsp;&nbsp; -1 If no completion can be done, the completion will be cancelled with an<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error message.<br>
&nbsp;&nbsp; -2 To cancel silently and stay in completion mode.<br>
&nbsp;&nbsp; -3 To cancel silently and leave completion mode.<br>
<br>
On the second invocation the arguments are:<br>
&nbsp;&nbsp; a:findstart&nbsp;&nbsp;0<br>
&nbsp;&nbsp; a:base&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the text with which matches should match; the text that was<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;located in the first call (can be empty)<br>
<br>
The function must return a List with the matching words.&nbsp;&nbsp;These matches<br>
usually include the &quot;a:base&quot; text.&nbsp;&nbsp;When there are no matches return an empty<br>
List.<br>
<br>
In order to return more information than the matching words, return a Dict<br>
that contains the List.&nbsp;&nbsp;The Dict can have these items:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;words&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The List of matching words (mandatory).<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;refresh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A string to control re-invocation of the function<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(optional).<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The only value currently recognized is &quot;always&quot;, the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;effect is that the function is called whenever the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;leading text is changed.<br>
Other items are ignored.<br>
<br>
For acting upon end of completion, see the&nbsp;<a class="Identifier" href="autocmd.html#CompleteDone">CompleteDone</a>&nbsp;autocommand event.<br>
<br>
For example, the function can contain this:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let matches = ... list of words ...<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return {'words': matches, 'refresh': 'always'}</div>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#complete-items" name="complete-items">complete-items</a><br>
Each list item can either be a string or a Dictionary.&nbsp;&nbsp;When it is a string it<br>
is used as the completion.&nbsp;&nbsp;When it is a Dictionary it can contain these<br>
items:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the text that will be inserted, mandatory<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;abbreviation of &quot;word&quot;; when not empty it is used in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the menu instead of &quot;word&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;menu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extra text for the popup menu, displayed after &quot;word&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or &quot;abbr&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;more information about the item, can be displayed in a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preview window<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kind&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;single letter indicating the type of completion<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;icase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; when non-zero case is to be ignored when comparing<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items to be equal; when omitted zero is used, thus<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;items that only differ in case are added<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; when non-zero this match will be added even when an<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item with the same word is already present.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empty&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; when non-zero this match will be added even when it is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;an empty string<br>
<br>
All of these except &quot;icase&quot;, &quot;dup&quot; and &quot;empty&quot; must be a string.&nbsp;&nbsp;If an item<br>
does not meet these requirements then an error message is given and further<br>
items in the list are not used.&nbsp;&nbsp;You can mix string and Dictionary items in<br>
the returned list.<br>
<br>
The &quot;menu&quot; item is used in the popup menu and may be truncated, thus it should<br>
be relatively short.&nbsp;&nbsp;The &quot;info&quot; item can be longer, it will&nbsp;&nbsp;be displayed in<br>
the preview window when &quot;preview&quot; appears in&nbsp;<a class="Type" href="options.html#'completeopt'">'completeopt'</a>.&nbsp;&nbsp;The &quot;info&quot; item<br>
will also remain displayed after the popup menu has been removed.&nbsp;&nbsp;This is<br>
useful for function arguments.&nbsp;&nbsp;Use a single space for &quot;info&quot; to remove<br>
existing text in the preview window.&nbsp;&nbsp;The size of the preview window is three<br>
lines, but&nbsp;<a class="Type" href="options.html#'previewheight'">'previewheight'</a>&nbsp;is used when it has a value of 1 or 2.<br>
<br>
The &quot;kind&quot; item uses a single letter to indicate the kind of completion.&nbsp;&nbsp;This<br>
may be used to show the completion differently (different color or icon).<br>
Currently these types can be used:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; variable<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function or method<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; member of a struct or class<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #define or macro<br>
<br>
When searching for matches takes some time call&nbsp;<a class="Identifier" href="eval.html#complete_add()">complete_add()</a>&nbsp;to add each<br>
match to the total list.&nbsp;&nbsp;These matches should then not appear in the returned<br>
list!&nbsp;&nbsp;Call&nbsp;<a class="Identifier" href="eval.html#complete_check()">complete_check()</a>&nbsp;now and then to allow the user to press a key<br>
while still searching for matches.&nbsp;&nbsp;Stop searching when it returns non-zero.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#E839" name="E839">E839</a>&nbsp;<a class="Constant" href="insert.html#E840" name="E840">E840</a><br>
The function is allowed to move the cursor, it is restored afterwards.<br>
The function is not allowed to move to another window or delete text.<br>
<br>
An example that completes the names of the months:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fun! CompleteMonths(findstart, base)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if a:findstart<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot; locate the start of the word<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let line = getline('.')<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let start = col('.') - 1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while start &gt; 0 &amp;&amp; line[start - 1] =~ '\a'<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let start -= 1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endwhile<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return start<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot; find months matching with &quot;a:base&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let res = []<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for m in split(&quot;Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec&quot;)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if m =~ '^' . a:base<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call add(res, m)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endfor<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return res<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endfun<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set completefunc=CompleteMonths</div>
<br>
The same, but now pretending searching for matches is slow:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fun! CompleteMonths(findstart, base)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if a:findstart<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot; locate the start of the word<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let line = getline('.')<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let start = col('.') - 1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while start &gt; 0 &amp;&amp; line[start - 1] =~ '\a'<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let start -= 1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endwhile<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return start<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot; find months matching with &quot;a:base&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for m in split(&quot;Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec&quot;)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if m =~ '^' . a:base<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call complete_add(m)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep 300m&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot; simulate searching for next match<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if complete_check()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endfor<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return []<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endfun<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set completefunc=CompleteMonths</div>
<br>
<br>
<span class="Statement">INSERT COMPLETION POPUP MENU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#ins-completion-menu" name="ins-completion-menu">ins-completion-menu</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#popupmenu-completion" name="popupmenu-completion">popupmenu-completion</a><br>
Vim can display the matches in a simplistic popup menu.<br>
<br>
The menu is used when:<br>
- The&nbsp;<a class="Type" href="options.html#'completeopt'">'completeopt'</a>&nbsp;option contains &quot;menu&quot; or &quot;menuone&quot;.<br>
- The terminal supports at least 8 colors.<br>
- There are at least two matches.&nbsp;&nbsp;One if &quot;menuone&quot; is used.<br>
<br>
The&nbsp;<a class="Type" href="options.html#'pumheight'">'pumheight'</a>&nbsp;option can be used to set a maximum height.&nbsp;&nbsp;The default is to<br>
use all space available.<br>
<br>
There are three states:<br>
1. A complete match has been inserted, e.g., after using&nbsp;<span class="Special">CTRL-N</span>&nbsp;or&nbsp;<span class="Special">CTRL-P</span>.<br>
2. A cursor key has been used to select another match.&nbsp;&nbsp;The match was not<br>
&nbsp;&nbsp; inserted then, only the entry in the popup menu is highlighted.<br>
3. Only part of a match has been inserted and characters were typed or the<br>
&nbsp;&nbsp; backspace key was used.&nbsp;&nbsp;The list of matches was then adjusted for what is<br>
&nbsp;&nbsp; in front of the cursor.<br>
<br>
You normally start in the first state, with the first match being inserted.<br>
When &quot;longest&quot; is in&nbsp;<a class="Type" href="options.html#'completeopt'">'completeopt'</a>&nbsp;and there is more than one match you start<br>
in the third state.<br>
<br>
If you select another match, e.g., with&nbsp;<span class="Special">CTRL-N</span>&nbsp;or&nbsp;<span class="Special">CTRL-P</span>, you go to the first<br>
state.&nbsp;&nbsp;This doesn't change the list of matches.<br>
<br>
When you are back at the original text then you are in the third state.&nbsp;&nbsp;To<br>
get there right away you can use a mapping that uses&nbsp;<span class="Special">CTRL-P</span>&nbsp;right after<br>
starting the completion:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:imap &lt;F7&gt; &lt;C-N&gt;&lt;C-P&gt;</div>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#popupmenu-keys" name="popupmenu-keys">popupmenu-keys</a><br>
In the first state these keys have a special meaning:<br>
<span class="Special">&lt;BS&gt;</span>&nbsp;and&nbsp;<span class="Special">CTRL-H</span>&nbsp;&nbsp; Delete one character, find the matches for the word before<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the cursor.&nbsp;&nbsp;This reduces the list of matches, often to one<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entry, and switches to the second state.<br>
Any non-special character:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stop completion without changing the match and insert the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typed character.<br>
<br>
In the second and third state these keys have a special meaning:<br>
<span class="Special">&lt;BS&gt;</span>&nbsp;and&nbsp;<span class="Special">CTRL-H</span>&nbsp;&nbsp; Delete one character, find the matches for the shorter word<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;before the cursor.&nbsp;&nbsp;This may find more matches.<br>
<span class="Special">CTRL-L</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add one character from the current match, may reduce the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number of matches.<br>
any printable, non-white character:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add this character and reduce the number of matches.<br>
<br>
In all three states these can be used:<br>
<span class="Special">CTRL-Y</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Yes: Accept the currently selected match and stop completion.<br>
<span class="Special">CTRL-E</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End completion, go back to what was there before selecting a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;match (what was typed or longest common string).<br>
<span class="Special">&lt;PageUp&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select a match several entries back, but don't insert it.<br>
<span class="Special">&lt;PageDown&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select a match several entries further, but don't insert it.<br>
<span class="Special">&lt;Up&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select the previous match, as if&nbsp;<span class="Special">CTRL-P</span>&nbsp;was used, but don't<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert it.<br>
<span class="Special">&lt;Down&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select the next match, as if&nbsp;<span class="Special">CTRL-N</span>&nbsp;was used, but don't<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert it.<br>
<span class="Special">&lt;Space&gt;</span>&nbsp;or&nbsp;<span class="Special">&lt;Tab&gt;</span>&nbsp;&nbsp;Stop completion without changing the match and insert the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typed character.<br>
<br>
The behavior of the&nbsp;<span class="Special">&lt;Enter&gt;</span>&nbsp;key depends on the state you are in:<br>
first state:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use the text as it is and insert a line break.<br>
second state:&nbsp;&nbsp;&nbsp;&nbsp; Insert the currently selected match.<br>
third state:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Use the text as it is and insert a line break.<br>
<br>
In other words: If you used the cursor keys to select another entry in the<br>
list of matches then the&nbsp;<span class="Special">&lt;Enter&gt;</span>&nbsp;key inserts that match.&nbsp;&nbsp;If you typed<br>
something else then&nbsp;<span class="Special">&lt;Enter&gt;</span>&nbsp;inserts a line break.<br>
<br>
<br>
The colors of the menu can be changed with these highlight groups:<br>
Pmenu&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; normal item&nbsp;&nbsp;<a class="Identifier" href="syntax.html#hl-Pmenu">hl-Pmenu</a><br>
PmenuSel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selected item&nbsp;&nbsp;<a class="Identifier" href="syntax.html#hl-PmenuSel">hl-PmenuSel</a><br>
PmenuSbar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scrollbar&nbsp;&nbsp;<a class="Identifier" href="syntax.html#hl-PmenuSbar">hl-PmenuSbar</a><br>
PmenuThumb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;thumb of the scrollbar&nbsp;&nbsp;<a class="Identifier" href="syntax.html#hl-PmenuThumb">hl-PmenuThumb</a><br>
<br>
There are no special mappings for when the popup menu is visible.&nbsp;&nbsp;However,<br>
you can use an Insert mode mapping that checks the&nbsp;<a class="Identifier" href="eval.html#pumvisible()">pumvisible()</a>&nbsp;function to<br>
do something different.&nbsp;&nbsp;Example:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:inoremap &lt;Down&gt; &lt;C-R&gt;=pumvisible() ? &quot;\&lt;lt&gt;C-N&gt;&quot; : &quot;\&lt;lt&gt;Down&gt;&quot;&lt;CR&gt;</div>
<br>
You can use of&nbsp;<span class="Special">&lt;expr&gt;</span>&nbsp;in mapping to have the popup menu used when typing a<br>
character and some condition is met.&nbsp;&nbsp;For example, for typing a dot:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inoremap &lt;expr&gt; . MayComplete()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;func MayComplete()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (can complete)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &quot;.\&lt;C-X&gt;\&lt;C-O&gt;&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endif<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return '.'<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;endfunc</div>
<br>
See&nbsp;<a class="Identifier" href="map.html#:map-<expr>">:map-&lt;expr&gt;</a>&nbsp;for more info.<br>
<br>
<br>
<span class="Statement">FILETYPE-SPECIFIC REMARKS FOR OMNI COMPLETION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#compl-omni-filetypes" name="compl-omni-filetypes">compl-omni-filetypes</a><br>
<br>
The file used for&nbsp;<span class="Special">{filetype}</span>&nbsp;should be autoload/<span class="Special">{filetype}</span>complete.vim<br>
in&nbsp;<a class="Type" href="options.html#'runtimepath'">'runtimepath'</a>.&nbsp;&nbsp;Thus for &quot;java&quot; it is autoload/javacomplete.vim.<br>
<br>
<br>
<span class="Statement">C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#ft-c-omni" name="ft-c-omni">ft-c-omni</a><br>
<br>
Completion of C code requires a tags file.&nbsp;&nbsp;You should use Exuberant ctags,<br>
because it adds extra information that is needed for completion.&nbsp;&nbsp;You can find<br>
it here:&nbsp;<span class="Constant"><a href="http://ctags.sourceforge.net/">http://ctags.sourceforge.net/</a></span>&nbsp;&nbsp;Version 5.6 or later is recommended.<br>
<br>
For version 5.5.4 you should add a patch that adds the &quot;typename:&quot; field:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Constant">ftp://ftp.vim.org/pub/vim/unstable/patches/ctags-5.5.4.patch</span><br>
A compiled .exe for MS-Windows can be found at:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Constant"><a href="http://georgevreilly.com/vim/ctags.html">http://georgevreilly.com/vim/ctags.html</a></span><br>
<br>
If you want to complete system functions you can do something like this.&nbsp;&nbsp;Use<br>
ctags to generate a tags file for all the system header files:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;% ctags -R -f ~/.vim/systags /usr/include /usr/local/include</div>
In your vimrc file add this tags file to the&nbsp;<a class="Type" href="options.html#'tags'">'tags'</a>&nbsp;option:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set tags+=~/.vim/systags</div>
<br>
When using&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-O</span>&nbsp;after a name without any &quot;.&quot; or &quot;-&gt;&quot; it is completed<br>
from the tags file directly.&nbsp;&nbsp;This works for any identifier, also function<br>
names.&nbsp;&nbsp;If you want to complete a local variable name, which does not appear<br>
in the tags file, use&nbsp;<span class="Special">CTRL-P</span>&nbsp;instead.<br>
<br>
When using&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-O</span>&nbsp;after something that has &quot;.&quot; or &quot;-&gt;&quot; Vim will attempt<br>
to recognize the type of the variable and figure out what members it has.<br>
This means only members valid for the variable will be listed.<br>
<br>
When a member name already was complete,&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-O</span>&nbsp;will add a &quot;.&quot; or<br>
&quot;-&gt;&quot; for composite types.<br>
<br>
Vim doesn't include a C compiler, only the most obviously formatted<br>
declarations are recognized.&nbsp;&nbsp;Preprocessor stuff may cause confusion.<br>
When the same structure name appears in multiple places all possible members<br>
are included.<br>
<br>
<br>
<span class="Statement">CSS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#ft-css-omni" name="ft-css-omni">ft-css-omni</a><br>
<br>
Complete properties and their appropriate values according to CSS 2.1<br>
specification.<br>
<br>
<br>
<span class="Statement">HTML&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#ft-html-omni" name="ft-html-omni">ft-html-omni</a><br>
<span class="Statement">XHTML&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#ft-xhtml-omni" name="ft-xhtml-omni">ft-xhtml-omni</a><br>
<br>
<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-O</span>&nbsp;provides completion of various elements of (X)HTML files.&nbsp;&nbsp;It is<br>
designed to support writing of XHTML 1.0 Strict files but will also work for<br>
other versions of HTML. Features:<br>
<br>
- after &quot;&lt;&quot; complete tag name depending on context (no div suggestion inside<br>
&nbsp;&nbsp;of an a tag); '/&gt;' indicates empty tags<br>
- inside of tag complete proper attributes (no width attribute for an a tag);<br>
&nbsp;&nbsp;show also type of attribute; '*' indicates required attributes<br>
- when attribute has limited number of possible values help to complete them<br>
- complete names of entities<br>
- complete values of &quot;class&quot; and &quot;id&quot; attributes with data obtained from<br>
&nbsp;&nbsp;<span class="Special">&lt;style&gt;</span>&nbsp;tag and included CSS files<br>
- when completing value of &quot;style&quot; attribute or working inside of &quot;style&quot; tag<br>
&nbsp;&nbsp;switch to&nbsp;<a class="Identifier" href="insert.html#ft-css-omni">ft-css-omni</a>&nbsp;completion<br>
- when completing values of events attributes or working inside of &quot;script&quot;<br>
&nbsp;&nbsp;tag switch to&nbsp;<a class="Identifier" href="insert.html#ft-javascript-omni">ft-javascript-omni</a>&nbsp;completion<br>
- when used after &quot;&lt;/&quot;&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-O</span>&nbsp;will close the last opened tag<br>
<br>
<span class="Todo">Note</span>: When used first time completion menu will be shown with little delay<br>
- this is time needed for loading of data file.<br>
<span class="Todo">Note</span>: Completion may fail in badly formatted documents. In such case try to<br>
run&nbsp;<a class="Identifier" href="quickfix.html#:make">:make</a>&nbsp;command to detect formatting problems.<br>
<br>
<br>
HTML flavor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#html-flavor" name="html-flavor">html-flavor</a><br>
<br>
The default HTML completion depends on the filetype.&nbsp;&nbsp;For HTML files it is<br>
HTML 4.01 Transitional (<a class="Type" href="options.html#'filetype'">'filetype'</a>&nbsp;is &quot;html&quot;), for XHTML it is XHTML 1.0<br>
Strict (<a class="Type" href="options.html#'filetype'">'filetype'</a>&nbsp;is &quot;xhtml&quot;).<br>
<br>
When doing completion outside of any other tag you will have possibility to<br>
choose DOCTYPE and the appropriate data file will be loaded and used for all<br>
next completions.<br>
<br>
More about format of data file in&nbsp;<a class="Identifier" href="insert.html#xml-omni-datafile">xml-omni-datafile</a>. Some of the data files<br>
may be found on the Vim website (<a class="Identifier" href="intro.html#www">www</a>).<br>
<br>
<span class="Todo">Note</span>&nbsp;that b:html_omni_flavor may point to a file with any XML data.&nbsp;&nbsp;This<br>
makes possible to mix PHP (<a class="Identifier" href="insert.html#ft-php-omni">ft-php-omni</a>) completion with any XML dialect<br>
(assuming you have data file for it).&nbsp;&nbsp;Without setting that variable XHTML 1.0<br>
Strict will be used.<br>
<br>
<br>
<span class="Statement">JAVASCRIPT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#ft-javascript-omni" name="ft-javascript-omni">ft-javascript-omni</a><br>
<br>
Completion of most elements of JavaScript language and DOM elements.<br>
<br>
Complete:<br>
<br>
- variables<br>
- function name; show function arguments<br>
- function arguments<br>
- properties of variables trying to detect type of variable<br>
- complete DOM objects and properties depending on context<br>
- keywords of language<br>
<br>
Completion works in separate JavaScript files (&amp;ft==javascript), inside of<br>
<span class="Special">&lt;script&gt;</span>&nbsp;tag of (X)HTML and in values of event attributes (including scanning<br>
of external files).<br>
<br>
DOM compatibility<br>
<br>
At the moment (beginning of 2006) there are two main browsers - MS Internet<br>
Explorer and Mozilla Firefox. These two applications are covering over 90% of<br>
market. Theoretically standards are created by W3C organisation<br>
(<span class="Constant"><a href="http://www.w3c.org">http://www.w3c.org</a></span>) but they are not always followed/implemented.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="PreProc">IE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;W3C&nbsp;&nbsp;Omni completion</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="PreProc">+/-&nbsp;&nbsp;&nbsp;&nbsp; +/-&nbsp;&nbsp;&nbsp;&nbsp; +&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="PreProc">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="PreProc">+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="PreProc">-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br>
<br>
Regardless from state of implementation in browsers but if element is defined<br>
in standards, completion plugin will place element in suggestion list. When<br>
both major engines implemented element, even if this is not in standards it<br>
will be suggested. All other elements are not placed in suggestion list.<br>
<br>
<br>
<span class="Statement">PHP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#ft-php-omni" name="ft-php-omni">ft-php-omni</a><br>
<br>
Completion of PHP code requires a tags file for completion of data from<br>
external files and for class aware completion. You should use Exuberant ctags<br>
version 5.5.4 or newer. You can find it here:&nbsp;<span class="Constant"><a href="http://ctags.sourceforge.net/">http://ctags.sourceforge.net/</a></span><br>
<br>
Script completes:<br>
<br>
- after $ variables name<br>
&nbsp;&nbsp;- if variable was declared as object add &quot;-&gt;&quot;, if tags file is available show<br>
&nbsp;&nbsp;&nbsp;&nbsp;name of class<br>
&nbsp;&nbsp;- after &quot;-&gt;&quot; complete only function and variable names specific for given<br>
&nbsp;&nbsp;&nbsp;&nbsp;class. To find class location and contents tags file is required. Because<br>
&nbsp;&nbsp;&nbsp;&nbsp;PHP isn't strongly typed language user can use @var tag to declare class:<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* @var $myVar myClass */<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$myVar-&gt;</div>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Still, to find myClass contents tags file is required.<br>
<br>
- function names with additional info:<br>
&nbsp;&nbsp;- in case of built-in functions list of possible arguments and after | type<br>
&nbsp;&nbsp;&nbsp;&nbsp;data returned by function<br>
&nbsp;&nbsp;- in case of user function arguments and name of file where function was<br>
&nbsp;&nbsp;&nbsp;&nbsp;defined (if it is not current file)<br>
<br>
- constants names<br>
- class names after &quot;new&quot; declaration<br>
<br>
<br>
<span class="Todo">Note</span>: when doing completion first time Vim will load all necessary data into<br>
memory. It may take several seconds. After next use of completion delay<br>
should not be noticeable.<br>
<br>
Script detects if cursor is inside &lt;?php ?&gt; tags. If it is outside it will<br>
automatically switch to HTML/CSS/JavaScript completion.&nbsp;<span class="Todo">Note</span>: contrary to<br>
original HTML files completion of tags (and only tags) isn't context aware.<br>
<br>
<br>
<span class="Statement">RUBY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#ft-ruby-omni" name="ft-ruby-omni">ft-ruby-omni</a><br>
<br>
Completion of Ruby code requires that vim be built with&nbsp;<a class="Identifier" href="various.html#+ruby">+ruby</a>.<br>
<br>
Ruby completion will parse your buffer on demand in order to provide a list of<br>
completions.&nbsp;&nbsp;These completions will be drawn from modules loaded by&nbsp;<span class="MissingTag">'require'</span><br>
and modules defined in the current buffer.<br>
<br>
The completions provided by&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-O</span>&nbsp;are sensitive to the context:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="PreProc">CONTEXT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;COMPLETIONS PROVIDED</span><br>
<br>
&nbsp;1. Not inside a class definition&nbsp;&nbsp;&nbsp;&nbsp;Classes, constants and globals<br>
<br>
&nbsp;2. Inside a class definition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Methods or constants defined in the class<br>
<br>
&nbsp;3. After '.', '::' or ':'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Methods applicable to the object being<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dereferenced<br>
<br>
&nbsp;4. After ':' or ':foo'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Symbol name (beginning with&nbsp;<span class="MissingTag">'foo'</span>)<br>
<br>
<span class="Todo">Notes</span>:<br>
&nbsp;- Vim will load/evaluate code in order to provide completions.&nbsp;&nbsp;This may<br>
&nbsp;&nbsp; cause some code execution, which may be a concern. This is no longer&nbsp;<br>
&nbsp;&nbsp; enabled by default, to enable this feature add<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp; let g:rubycomplete_buffer_loading = 1</div>
- In context 1 above, Vim can parse the entire buffer to add a list of<br>
&nbsp;&nbsp; classes to the completion results. This feature is turned off by default,<br>
&nbsp;&nbsp; to enable it add<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp; let g:rubycomplete_classes_in_global = 1</div>
&nbsp;&nbsp;&nbsp;to your vimrc<br>
&nbsp;- In context 2 above, anonymous classes are not supported.<br>
&nbsp;- In context 3 above, Vim will attempt to determine the methods supported by<br>
&nbsp;&nbsp; the object.<br>
&nbsp;- Vim can detect and load the Rails environment for files within a rails<br>
&nbsp;&nbsp; project. The feature is disabled by default, to enable it add<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp; let g:rubycomplete_rails = 1</div>
&nbsp;&nbsp;&nbsp;to your vimrc<br>
<br>
<br>
<span class="Statement">SYNTAX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#ft-syntax-omni" name="ft-syntax-omni">ft-syntax-omni</a><br>
<br>
Vim has the ability to color syntax highlight nearly 500 languages.&nbsp;&nbsp;Part of<br>
this highlighting includes knowing what keywords are part of a language.&nbsp;&nbsp;Many<br>
filetypes already have custom completion scripts written for them, the<br>
syntaxcomplete plugin provides basic completion for all other filetypes.&nbsp;&nbsp;It<br>
does this by populating the omni completion list with the text Vim already<br>
knows how to color highlight.&nbsp;&nbsp;It can be used for any filetype and provides a<br>
minimal language-sensitive completion.<br>
<br>
To enable syntax code completion you can run:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;setlocal omnifunc=syntaxcomplete#Complete</div>
<br>
You can automate this by placing the following in your&nbsp;<a class="Identifier" href="starting.html#.vimrc">.vimrc</a>&nbsp;(after any<br>
&quot;:filetype&quot; command):<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;if has(&quot;autocmd&quot;) &amp;&amp; exists(&quot;+omnifunc&quot;)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autocmd Filetype *<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;&nbsp; if &amp;omnifunc == &quot;&quot; |<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setlocal omnifunc=syntaxcomplete#Complete |<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;&nbsp; endif<br>
&nbsp;&nbsp;&nbsp;&nbsp;endif</div>
<br>
The above will set completion to this script only if a specific plugin does<br>
not already exist for that filetype.<br>
<br>
Each filetype can have a wide range of syntax items.&nbsp;&nbsp;The plugin allows you to<br>
customize which syntax groups to include or exclude from the list.&nbsp;&nbsp;Let's have<br>
a look at the PHP filetype to see how this works.<br>
<br>
If you edit a file called, index.php, run the following command:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;syntax list</div>
<br>
The first thing you will notice is that there are many different syntax groups.<br>
The PHP language can include elements from different languages like HTML,<br>
JavaScript and many more.&nbsp;&nbsp;The syntax plugin will only include syntax groups<br>
that begin with the filetype, &quot;php&quot;, in this case.&nbsp;&nbsp;For example these syntax<br>
groups are included by default with the PHP: phpEnvVar, phpIntVar,<br>
phpFunctions.<br>
<br>
If you wish non-filetype syntax items to also be included, you can use a&nbsp;<br>
regular expression syntax (added in version 13.0 of autoload\syntaxcomplete.vim)<br>
to add items.&nbsp;&nbsp;Looking at the output from &quot;:syntax list&quot; while editing a PHP file&nbsp;<br>
I can see some of these entries:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;htmlArg,htmlTag,htmlTagName,javaScriptStatement,javaScriptGlobalObjects</div>
<br>
To pick up any JavaScript and HTML keyword syntax groups while editing a PHP<br>
file, you can use 3 different regexs, one for each language.&nbsp;&nbsp;Or you can&nbsp;<br>
simply restrict the include groups to a particular value, without using&nbsp;<br>
a regex string:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;let g:omni_syntax_group_include_php = 'php\w\+,javaScript\w\+,html\w\+'<br>
&nbsp;&nbsp;&nbsp;&nbsp;let g:omni_syntax_group_include_php = 'phpFunctions,phpMethods'</div>
<br>
The basic form of this variable is:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;let g:omni_syntax_group_include_{filetype} = 'regex,comma,separated'</div>
<br>
The PHP language has an enormous number of items which it knows how to syntax<br>
highlight.&nbsp;&nbsp;These items will be available within the omni completion list.<br>
<br>
Some people may find this list unwieldy or are only interested in certain<br>
items.&nbsp;&nbsp;There are two ways to prune this list (if necessary).&nbsp;&nbsp;If you find<br>
certain syntax groups you do not wish displayed you can use two different&nbsp;<br>
methods to identify these groups.&nbsp;&nbsp;The first specifically lists the syntax&nbsp;<br>
groups by name.&nbsp;&nbsp;The second uses a regular expression to identify both&nbsp;<br>
syntax groups.&nbsp;&nbsp;Simply add one the following to your vimrc:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;let g:omni_syntax_group_exclude_php = 'phpCoreConstant,phpConstant'<br>
&nbsp;&nbsp;&nbsp;&nbsp;let g:omni_syntax_group_exclude_php = 'php\w*Constant'</div>
<br>
Add as many syntax groups to this list by comma separating them.&nbsp;&nbsp;The basic<br>
form of this variable is:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;let g:omni_syntax_group_exclude_{filetype} = 'regex,comma,separated'</div>
<br>
You can create as many of these variables as you need, varying only the<br>
filetype at the end of the variable name.<br>
<br>
The plugin uses the isKeyword option to determine where word boundaries are<br>
for the syntax items.&nbsp;&nbsp;For example, in the Scheme language completion should<br>
include the &quot;-&quot;, call-with-output-file.&nbsp;&nbsp;Depending on your filetype, this may<br>
not provide the words you are expecting.&nbsp;&nbsp;Setting the<br>
g:omni_syntax_use_iskeyword option to 0 will force the syntax plugin to break<br>
on word characters.&nbsp;&nbsp; This can be controlled adding the following to your<br>
vimrc:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;let g:omni_syntax_use_iskeyword = 0</div>
<br>
For plugin developers, the plugin exposes a public function OmniSyntaxList.<br>
This function can be used to request a List of syntax items.&nbsp;&nbsp;When editing a<br>
SQL file (:e syntax.sql) you can use the &quot;:syntax list&quot; command to see the&nbsp;<br>
various groups and syntax items.&nbsp;&nbsp;For example:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;syntax list&nbsp;</div>
<br>
Yields data similar to this:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;sqlOperator&nbsp;&nbsp;&nbsp;&nbsp;xxx some prior all like and any escape exists in is not&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; or intersect minus between distinct<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; links to Operator<br>
&nbsp;&nbsp;&nbsp;&nbsp;sqlType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xxx varbit varchar nvarchar bigint int uniqueidentifier&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; date money long tinyint unsigned xml text smalldate&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double datetime nchar smallint numeric time bit char&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; varbinary binary smallmoney<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; image float integer timestamp real decimal</div>
<br>
There are two syntax groups listed here: sqlOperator and sqlType.&nbsp;&nbsp;To retrieve<br>
a List of syntax items you can call OmniSyntaxList a number of different&nbsp;<br>
ways.&nbsp;&nbsp;To retrieve all syntax items regardless of syntax group:&nbsp;<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;echo OmniSyntaxList( [] )</div>
<br>
To retrieve only the syntax items for the sqlOperator syntax group:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;echo OmniSyntaxList( ['sqlOperator'] )</div>
<br>
To retrieve all syntax items for both the sqlOperator and sqlType groups:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;echo OmniSyntaxList( ['sqlOperator', 'sqlType'] )</div>
<br>
A regular expression can also be used:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;echo OmniSyntaxList( ['sql\w\+'] )</div>
<br>
From within a plugin, you would typically assign the output to a List:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;let myKeywords = []<br>
&nbsp;&nbsp;&nbsp;&nbsp;let myKeywords = OmniSyntaxList( ['sqlKeyword'] )</div>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;</div>
<br>
<span class="Statement">SQL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#ft-sql-omni" name="ft-sql-omni">ft-sql-omni</a><br>
<br>
Completion for the SQL language includes statements, functions, keywords.<br>
It will also dynamically complete tables, procedures, views and column lists<br>
with data pulled directly from within a database.&nbsp;&nbsp;For detailed instructions<br>
and a tutorial see&nbsp;<a class="Identifier" href="ft_sql.html#omni-sql-completion">omni-sql-completion</a>.<br>
<br>
The SQL completion plugin can be used in conjunction with other completion<br>
plugins.&nbsp;&nbsp;For example, the PHP filetype has its own completion plugin.<br>
Since PHP is often used to generate dynamic website by accessing a database,<br>
the SQL completion plugin can also be enabled.&nbsp;&nbsp;This allows you to complete<br>
PHP code and SQL code at the same time.<br>
<br>
<br>
<span class="Statement">XML&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><a class="Constant" href="insert.html#ft-xml-omni" name="ft-xml-omni">ft-xml-omni</a><br>
<br>
Vim 7 provides a mechanism for context aware completion of XML files.&nbsp;&nbsp;It<br>
depends on a special&nbsp;<a class="Identifier" href="insert.html#xml-omni-datafile">xml-omni-datafile</a>&nbsp;and two commands:&nbsp;<a class="Identifier" href="insert.html#:XMLns">:XMLns</a>&nbsp;and<br>
<a class="Identifier" href="insert.html#:XMLent">:XMLent</a>.&nbsp;&nbsp;Features are:<br>
<br>
- after &quot;&lt;&quot; complete the tag name, depending on context<br>
- inside of a tag complete proper attributes<br>
- when an attribute has a limited number of possible values help to complete<br>
&nbsp;&nbsp;them<br>
- complete names of entities (defined in&nbsp;<a class="Identifier" href="insert.html#xml-omni-datafile">xml-omni-datafile</a>&nbsp;and in the<br>
&nbsp;&nbsp;current file with &quot;&lt;!ENTITY&quot; declarations)<br>
- when used after &quot;&lt;/&quot;&nbsp;<span class="Special">CTRL-X</span>&nbsp;<span class="Special">CTRL-O</span>&nbsp;will close the last opened tag<br>
<br>
Format of XML data file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#xml-omni-datafile" name="xml-omni-datafile">xml-omni-datafile</a><br>
<br>
XML data files are stored in the &quot;autoload/xml&quot; directory in&nbsp;<a class="Type" href="options.html#'runtimepath'">'runtimepath'</a>.<br>
Vim distribution provides examples of data files in the<br>
&quot;$VIMRUNTIME/autoload/xml&quot; directory.&nbsp;&nbsp;They have a meaningful name which will<br>
be used in commands.&nbsp;&nbsp;It should be a unique name which will not create<br>
conflicts.&nbsp;&nbsp;For example, the name xhtml10s.vim means it is the data file for<br>
XHTML 1.0 Strict.<br>
<br>
Each file contains a variable with a name like g:xmldata_xhtml10s . It is<br>
a compound from two parts:<br>
<br>
1. &quot;g:xmldata_&quot;&nbsp;&nbsp;general prefix, constant for all data files<br>
2. &quot;xhtml10s&quot;&nbsp;&nbsp;&nbsp;&nbsp;the name of the file and the name of the described XML<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dialect; it will be used as an argument for the&nbsp;<a class="Identifier" href="insert.html#:XMLns">:XMLns</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command<br>
<br>
Part two must be exactly the same as name of file.<br>
<br>
The variable is a&nbsp;<a class="Identifier" href="eval.html#Dictionary">Dictionary</a>.&nbsp;&nbsp;Keys are tag names and each value is a two<br>
element&nbsp;<a class="Identifier" href="eval.html#List">List</a>.&nbsp;&nbsp;The first element of the List is also a List with the names<br>
of possible children.&nbsp;&nbsp;The second element is a&nbsp;<a class="Identifier" href="eval.html#Dictionary">Dictionary</a>&nbsp;with the names of<br>
attributes as keys and the possible values of attributes as values.&nbsp;&nbsp;Example:<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;let g:xmldata_crippled = {<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ &quot;vimxmlentities&quot;: [&quot;amp&quot;, &quot;lt&quot;, &quot;gt&quot;, &quot;apos&quot;, &quot;quot&quot;],<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ 'vimxmlroot': ['tag1'],<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ 'tag1':<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ [ ['childoftag1a', 'childoftag1b'], {'attroftag1a': [],<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ 'attroftag1b': ['valueofattr1', 'valueofattr2']}],<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ 'childoftag1a':<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ [ [], {'attrofchild': ['attrofchild']}],<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ 'childoftag1b':<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ [ ['childoftag1a'], {'attrofchild': []}],<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ &quot;vimxmltaginfo&quot;: {<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ 'tag1': ['Menu info', 'Long information visible in preview window']},<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ 'vimxmlattrinfo': {<br>
&nbsp;&nbsp;&nbsp;&nbsp;\ 'attrofchild': ['Menu info', 'Long information visible in preview window']}}</div>
<br>
This example would be put in the &quot;autoload/xml/crippled.vim&quot; file and could<br>
help to write this file:<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&lt;tag1 attroftag1b=&quot;valueofattr1&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;childoftag1a attrofchild&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;amp; &amp;lt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/childoftag1a&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;childoftag1b attrofchild=&quot;5&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;childoftag1a&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;gt; &amp;apos; &amp;quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/childoftag1a&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/childoftag1b&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/tag1&gt;</div>
<br>
In the example four special elements are visible:<br>
<br>
1. &quot;vimxmlentities&quot; - a special key with List containing entities of this XML<br>
&nbsp;&nbsp; dialect.<br>
2. If the list containing possible values of attributes has one element and<br>
&nbsp;&nbsp; this element is equal to the name of the attribute this attribute will be<br>
&nbsp;&nbsp; treated as boolean and inserted as&nbsp;<span class="MissingTag">'attrname'</span>&nbsp;and not as 'attrname=&quot;'<br>
3. &quot;vimxmltaginfo&quot; - a special key with a Dictionary containing tag<br>
&nbsp;&nbsp; names as keys and two element List as values, for additional menu info and<br>
&nbsp;&nbsp; the long description.<br>
4. &quot;vimxmlattrinfo&quot; - special key with Dictionary containing attribute names<br>
&nbsp;&nbsp; as keys and two element List as values, for additional menu info and long<br>
&nbsp;&nbsp; description.<br>
<br>
<span class="Todo">Note</span>: Tag names in the data file MUST not contain a namespace description.<br>
Check xsl.vim for an example.<br>
<span class="Todo">Note</span>: All data and functions are publicly available as global<br>
variables/functions and can be used for personal editing functions.<br>
<br>
<br>
DTD -&gt; Vim&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#dtd2vim" name="dtd2vim">dtd2vim</a><br>
<br>
On&nbsp;<a class="Identifier" href="intro.html#www">www</a>&nbsp;is the script&nbsp;<a class="Identifier" href="insert.html#dtd2vim">dtd2vim</a>&nbsp;which parses DTD and creates an XML data file<br>
for Vim XML omni completion.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;dtd2vim:&nbsp;<span class="Constant"><a href="http://www.vim.org/scripts/script.php?script_id=1462">http://www.vim.org/scripts/script.php?script_id=1462</a></span><br>
<br>
Check the beginning of that file for usage details.<br>
The script requires perl and:<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;perlSGML:&nbsp;<span class="Constant"><a href="http://savannah.nongnu.org/projects/perlsgml">http://savannah.nongnu.org/projects/perlsgml</a></span><br>
<br>
<br>
Commands<br>
<br>
:XMLns&nbsp;<span class="Special">{name}</span>&nbsp;[<span class="Special">{namespace}</span>]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#:XMLns" name=":XMLns">:XMLns</a><br>
<br>
Vim has to know which data file should be used and with which namespace.&nbsp;&nbsp;For<br>
loading of the data file and connecting data with the proper namespace use<br>
<a class="Identifier" href="insert.html#:XMLns">:XMLns</a>&nbsp;command.&nbsp;&nbsp;The first (obligatory) argument is the name of the data<br>
(xhtml10s, xsl).&nbsp;&nbsp;The second argument is the code of namespace (h, xsl).&nbsp;&nbsp;When<br>
used without a second argument the dialect will be used as default - without<br>
namespace declaration.&nbsp;&nbsp;For example to use XML completion in .xsl files:<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:XMLns xhtml10s<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:XMLns xsl xsl</div>
<br>
<br>
:XMLent&nbsp;<span class="Special">{name}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#:XMLent" name=":XMLent">:XMLent</a><br>
<br>
By default entities will be completed from the data file of the default<br>
namespace.&nbsp;&nbsp;The XMLent command should be used in case when there is no default<br>
namespace:<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:XMLent xhtml10s</div>
<br>
Usage<br>
<br>
While used in this situation (after declarations from previous part, | is<br>
cursor position):<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;|</div>
<br>
Will complete to an appropriate XHTML tag, and in this situation:<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;xsl:|</div>
<br>
Will complete to an appropriate XSL tag.<br>
<br>
<br>
The script xmlcomplete.vim, provided through the&nbsp;<a class="Identifier" href="eval.html#autoload">autoload</a>&nbsp;mechanism,<br>
has the xmlcomplete#GetLastOpenTag() function which can be used in XML files<br>
to get the name of the last open tag (b:unaryTagsStack has to be defined):<br>
<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:echo xmlcomplete#GetLastOpenTag(&quot;b:unaryTagsStack&quot;)</div>
<br>
<br>
<br>
<span class="PreProc">==============================================================================</span><br>
8. Insert mode commands&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#inserting" name="inserting">inserting</a><br>
<br>
The following commands can be used to insert new text into the buffer.&nbsp;&nbsp;They<br>
can all be undone and repeated with the &quot;.&quot; command.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#a" name="a">a</a><br>
a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Append text after the cursor&nbsp;<span class="Special">[count]</span>&nbsp;times.&nbsp;&nbsp;If the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cursor is in the first column of an empty line Insert<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;starts there.&nbsp;&nbsp;But not when&nbsp;<a class="Type" href="options.html#'virtualedit'">'virtualedit'</a>&nbsp;is set!<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#A" name="A">A</a><br>
A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Append text at the end of the line&nbsp;<span class="Special">[count]</span>&nbsp;times.<br>
<br>
<span class="Special">&lt;insert&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#i" name="i">i</a>&nbsp;<a class="Constant" href="insert.html#insert" name="insert">insert</a>&nbsp;<a class="Constant" href="insert.html#<Insert>" name="&lt;Insert&gt;">&lt;Insert&gt;</a><br>
i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Insert text before the cursor&nbsp;<span class="Special">[count]</span>&nbsp;times.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When using&nbsp;<span class="Special">CTRL-O</span>&nbsp;in Insert mode&nbsp;<a class="Identifier" href="insert.html#i_CTRL-O">i_CTRL-O</a>&nbsp;the count<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is not supported.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#I" name="I">I</a><br>
I&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Insert text before the first non-blank in the line<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">[count]</span>&nbsp;times.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When the 'H' flag is present in&nbsp;<a class="Type" href="options.html#'cpoptions'">'cpoptions'</a>&nbsp;and the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line only contains blanks, insert start just before<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the last blank.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#gI" name="gI">gI</a><br>
gI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert text in column 1&nbsp;<span class="Special">[count]</span>&nbsp;times.&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#gi" name="gi">gi</a><br>
gi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert text in the same position as where Insert mode<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;was stopped last time in the current buffer.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This uses the&nbsp;<a class="Identifier" href="motion.html#'^">'^</a>&nbsp;mark.&nbsp;&nbsp;It's different from &quot;`^i&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;when the mark is past the end of the line.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The position is corrected for inserted/deleted lines,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but NOT for inserted/deleted characters.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When the&nbsp;<a class="Identifier" href="motion.html#:keepjumps">:keepjumps</a>&nbsp;command modifier is used the&nbsp;<a class="Identifier" href="motion.html#'^">'^</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark won't be changed.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#o" name="o">o</a><br>
o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Begin a new line below the cursor and insert text,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repeat&nbsp;<span class="Special">[count]</span>&nbsp;times.&nbsp;&nbsp;<span class="Special">{Vi: blank [count] screen</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">lines}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When the '#' flag is in&nbsp;<a class="Type" href="options.html#'cpoptions'">'cpoptions'</a>&nbsp;the count is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ignored.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#O" name="O">O</a><br>
O&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Begin a new line above the cursor and insert text,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repeat&nbsp;<span class="Special">[count]</span>&nbsp;times.&nbsp;&nbsp;<span class="Special">{Vi: blank [count] screen</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">lines}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;When the '#' flag is in&nbsp;<a class="Type" href="options.html#'cpoptions'">'cpoptions'</a>&nbsp;the count is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ignored.<br>
<br>
These commands are used to start inserting text.&nbsp;&nbsp;You can end insert mode with<br>
<span class="Special">&lt;Esc&gt;</span>.&nbsp;&nbsp;See&nbsp;<a class="Identifier" href="insert.html#mode-ins-repl">mode-ins-repl</a>&nbsp;for the other special characters in Insert mode.<br>
The effect of&nbsp;<span class="Special">[count]</span>&nbsp;takes place after Insert mode is exited.<br>
<br>
When&nbsp;<a class="Type" href="options.html#'autoindent'">'autoindent'</a>&nbsp;is on, the indent for a new line is obtained from the<br>
previous line.&nbsp;&nbsp;When&nbsp;<a class="Type" href="options.html#'smartindent'">'smartindent'</a>&nbsp;or&nbsp;<a class="Type" href="options.html#'cindent'">'cindent'</a>&nbsp;is on, the indent for a line<br>
is automatically adjusted for C programs.<br>
<br>
<a class="Type" href="options.html#'textwidth'">'textwidth'</a>&nbsp;can be set to the maximum width for a line.&nbsp;&nbsp;When a line becomes<br>
too long when appending characters a line break is automatically inserted.<br>
<br>
<br>
<span class="PreProc">==============================================================================</span><br>
9. Ex insert commands&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#inserting-ex" name="inserting-ex">inserting-ex</a><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#:a" name=":a">:a</a>&nbsp;<a class="Constant" href="insert.html#:append" name=":append">:append</a><br>
:<span class="Special">{range}</span>a[ppend][!]&nbsp;&nbsp;&nbsp;&nbsp; Insert several lines of text below the specified<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line.&nbsp;&nbsp;If the&nbsp;<span class="Special">{range}</span>&nbsp;is missing, the text will be<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inserted after the current line.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adding [!] toggles&nbsp;<a class="Type" href="options.html#'autoindent'">'autoindent'</a>&nbsp;for the time this<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command is executed.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#:i" name=":i">:i</a>&nbsp;<a class="Constant" href="insert.html#:in" name=":in">:in</a>&nbsp;<a class="Constant" href="insert.html#:insert" name=":insert">:insert</a><br>
:<span class="Special">{range}</span>i[nsert][!]&nbsp;&nbsp;&nbsp;&nbsp; Insert several lines of text above the specified<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line.&nbsp;&nbsp;If the&nbsp;<span class="Special">{range}</span>&nbsp;is missing, the text will be<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inserted before the current line.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adding [!] toggles&nbsp;<a class="Type" href="options.html#'autoindent'">'autoindent'</a>&nbsp;for the time this<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command is executed.<br>
<br>
These two commands will keep on asking for lines, until you type a line<br>
containing only a &quot;.&quot;.&nbsp;&nbsp;Watch out for lines starting with a backslash, see<br>
<a class="Identifier" href="repeat.html#line-continuation">line-continuation</a>.<br>
<br>
When in Ex mode (see&nbsp;<a class="Identifier" href="starting.html#-e">-e</a>) a backslash at the end of the line can be used to<br>
insert a NUL character.&nbsp;&nbsp;To be able to have a line ending in a backslash use<br>
two backslashes.&nbsp;&nbsp;This means that the number of backslashes is halved, but<br>
only at the end of the line.<br>
<br>
<span class="Todo">NOTE</span>: These commands cannot be used with&nbsp;<a class="Identifier" href="repeat.html#:global">:global</a>&nbsp;or&nbsp;<a class="Identifier" href="repeat.html#:vglobal">:vglobal</a>.<br>
&quot;:append&quot; and &quot;:insert&quot; don't work properly in between &quot;:if&quot; and<br>
&quot;:endif&quot;, &quot;:for&quot; and &quot;:endfor&quot;, &quot;:while&quot; and &quot;:endwhile&quot;.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#:start" name=":start">:start</a>&nbsp;<a class="Constant" href="insert.html#:startinsert" name=":startinsert">:startinsert</a><br>
:star[tinsert][!]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Start Insert mode just after executing this command.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Works like typing &quot;i&quot; in Normal mode.&nbsp;&nbsp;When the ! is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;included it works like &quot;A&quot;, append to the line.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Otherwise insertion starts at the cursor position.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Todo">Note</span>&nbsp;that when using this command in a function or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;script, the insertion only starts after the function<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or script is finished.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This command does not work from&nbsp;<a class="Identifier" href="various.html#:normal">:normal</a>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#:stopi" name=":stopi">:stopi</a>&nbsp;<a class="Constant" href="insert.html#:stopinsert" name=":stopinsert">:stopinsert</a><br>
:stopi[nsert]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Stop Insert mode as soon as possible.&nbsp;&nbsp;Works like<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typing&nbsp;<span class="Special">&lt;Esc&gt;</span>&nbsp;in Insert mode.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Can be used in an autocommand, example:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:au BufEnter scratch stopinsert</div>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#replacing-ex" name="replacing-ex">replacing-ex</a>&nbsp;<a class="Constant" href="insert.html#:startreplace" name=":startreplace">:startreplace</a><br>
:startr[eplace][!]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Start Replace mode just after executing this command.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Works just like typing &quot;R&quot; in Normal mode.&nbsp;&nbsp;When the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;! is included it acts just like &quot;$R&quot; had been typed<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ie. begin replace mode at the end-of-line).&nbsp;&nbsp;Other-<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wise replacement begins at the cursor position.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Todo">Note</span>&nbsp;that when using this command in a function or<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;script that the replacement will only start after<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the function or script is finished.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#:startgreplace" name=":startgreplace">:startgreplace</a><br>
:startg[replace][!]&nbsp;&nbsp;&nbsp;&nbsp; Just like&nbsp;<a class="Identifier" href="insert.html#:startreplace">:startreplace</a>, but use Virtual Replace<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode, like with&nbsp;<a class="Identifier" href="change.html#gR">gR</a>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">{not in Vi}</span><br>
<br>
<span class="PreProc">==============================================================================</span><br>
10. Inserting a file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#inserting-file" name="inserting-file">inserting-file</a><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#:r" name=":r">:r</a>&nbsp;<a class="Constant" href="insert.html#:re" name=":re">:re</a>&nbsp;<a class="Constant" href="insert.html#:read" name=":read">:read</a><br>
:r[ead]&nbsp;<span class="Special">[++opt]</span>&nbsp;<span class="Special">[name]</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert the file&nbsp;<span class="Special">[name]</span>&nbsp;(default: current file) below<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the cursor.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See&nbsp;<a class="Identifier" href="editing.html#++opt">++opt</a>&nbsp;for the possible values of&nbsp;<span class="Special">[++opt]</span>.<br>
<br>
:<span class="Special">{range}</span>r[ead]&nbsp;<span class="Special">[++opt]</span>&nbsp;<span class="Special">[name]</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Insert the file&nbsp;<span class="Special">[name]</span>&nbsp;(default: current file) below<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the specified line.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See&nbsp;<a class="Identifier" href="editing.html#++opt">++opt</a>&nbsp;for the possible values of&nbsp;<span class="Special">[++opt]</span>.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#:r!" name=":r!">:r!</a>&nbsp;<a class="Constant" href="insert.html#:read!" name=":read!">:read!</a><br>
:<span class="Special">[range]</span>r[ead]&nbsp;<span class="Special">[++opt]</span>&nbsp;!<span class="Special">{cmd}</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Execute&nbsp;<span class="Special">{cmd}</span>&nbsp;and insert its standard output below<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the cursor or the specified line.&nbsp;&nbsp;A temporary file is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;used to store the output of the command which is then<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;read into the buffer.&nbsp;&nbsp;<a class="Type" href="options.html#'shellredir'">'shellredir'</a>&nbsp;is used to save<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the output of the command, which can be set to include<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stderr or not.&nbsp;&nbsp;<span class="Special">{cmd}</span>&nbsp;is executed like with &quot;:!<span class="Special">{cmd}</span>&quot;,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;any '!' is replaced with the previous command&nbsp;<a class="Identifier" href="various.html#:!">:!</a>.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;See&nbsp;<a class="Identifier" href="editing.html#++opt">++opt</a>&nbsp;for the possible values of&nbsp;<span class="Special">[++opt]</span>.<br>
<br>
These commands insert the contents of a file, or the output of a command,<br>
into the buffer.&nbsp;&nbsp;They can be undone.&nbsp;&nbsp;They cannot be repeated with the &quot;.&quot;<br>
command.&nbsp;&nbsp;They work on a line basis, insertion starts below the line in which<br>
the cursor is, or below the specified line.&nbsp;&nbsp;To insert text above the first<br>
line use the command &quot;:0r&nbsp;<span class="Special">{name}</span>&quot;.<br>
<br>
After the &quot;:read&quot; command, the cursor is left on the first non-blank in the<br>
first new line.&nbsp;&nbsp;Unless in Ex mode, then the cursor is left on the last new<br>
line (sorry, this is Vi compatible).<br>
<br>
If a file name is given with &quot;:r&quot;, it becomes the alternate file.&nbsp;&nbsp;This can be<br>
used, for example, when you want to edit that file instead: &quot;:e! #&quot;.&nbsp;&nbsp;This can<br>
be switched off by removing the 'a' flag from the&nbsp;<a class="Type" href="options.html#'cpoptions'">'cpoptions'</a>&nbsp;option.<br>
<br>
Of the&nbsp;<span class="Special">[++opt]</span>&nbsp;arguments one is specifically for &quot;:read&quot;, the ++edit argument.<br>
This is useful when the &quot;:read&quot; command is actually used to read a file into<br>
the buffer as if editing that file.&nbsp;&nbsp;Use this command in an empty buffer:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:read ++edit filename</div>
The effect is that the&nbsp;<a class="Type" href="options.html#'fileformat'">'fileformat'</a>,&nbsp;<a class="Type" href="options.html#'fileencoding'">'fileencoding'</a>,&nbsp;<a class="Type" href="options.html#'bomb'">'bomb'</a>, etc. options are<br>
set to what has been detected for &quot;filename&quot;.&nbsp;&nbsp;<span class="Todo">Note</span>&nbsp;that a single empty line<br>
remains, you may want to delete it.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#file-read" name="file-read">file-read</a><br>
The&nbsp;<a class="Type" href="options.html#'fileformat'">'fileformat'</a>&nbsp;option sets the&nbsp;<span class="Special">&lt;EOL&gt;</span>&nbsp;style for a file:<br>
<span class="PreProc">'fileformat'&nbsp;&nbsp;&nbsp;&nbsp;characters&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br>
&nbsp;&nbsp;&quot;dos&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">&lt;CR&gt;&lt;NL&gt;</span>&nbsp;or&nbsp;<span class="Special">&lt;NL&gt;</span>&nbsp;&nbsp; DOS format<br>
&nbsp;&nbsp;&quot;unix&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">&lt;NL&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Unix format<br>
&nbsp;&nbsp;&quot;mac&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">&lt;CR&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mac format<br>
Previously&nbsp;<a class="Type" href="options.html#'textmode'">'textmode'</a>&nbsp;was used.&nbsp;&nbsp;It is obsolete now.<br>
<br>
If&nbsp;<a class="Type" href="options.html#'fileformat'">'fileformat'</a>&nbsp;is &quot;dos&quot;, a&nbsp;<span class="Special">&lt;CR&gt;</span>&nbsp;in front of an&nbsp;<span class="Special">&lt;NL&gt;</span>&nbsp;is ignored and a&nbsp;<span class="Special">CTRL-Z</span><br>
at the end of the file is ignored.<br>
<br>
If&nbsp;<a class="Type" href="options.html#'fileformat'">'fileformat'</a>&nbsp;is &quot;mac&quot;, a&nbsp;<span class="Special">&lt;NL&gt;</span>&nbsp;in the file is internally represented by a<br>
<span class="Special">&lt;CR&gt;</span>.&nbsp;&nbsp;This is to avoid confusion with a&nbsp;<span class="Special">&lt;NL&gt;</span>&nbsp;which is used to represent a<br>
<span class="Special">&lt;NUL&gt;</span>.&nbsp;&nbsp;See&nbsp;<a class="Identifier" href="pattern.html#CR-used-for-NL">CR-used-for-NL</a>.<br>
<br>
If the&nbsp;<a class="Type" href="options.html#'fileformats'">'fileformats'</a>&nbsp;option is not empty Vim tries to recognize the type of<br>
<span class="Special">&lt;EOL&gt;</span>&nbsp;(see&nbsp;<a class="Identifier" href="editing.html#file-formats">file-formats</a>).&nbsp;&nbsp;However, the&nbsp;<a class="Type" href="options.html#'fileformat'">'fileformat'</a>&nbsp;option will not be<br>
changed, the detected format is only used while reading the file.<br>
A similar thing happens with&nbsp;<a class="Type" href="options.html#'fileencodings'">'fileencodings'</a>.<br>
<br>
On non-MS-DOS, Win32, and OS/2 systems the message &quot;[dos format]&quot; is shown if<br>
a file is read in DOS format, to remind you that something unusual is done.<br>
On Macintosh, MS-DOS, Win32, and OS/2 the message &quot;[unix format]&quot; is shown if<br>
a file is read in Unix format.<br>
On non-Macintosh systems, the message &quot;[Mac format]&quot; is shown if a file is<br>
read in Mac format.<br>
<br>
An example on how to use &quot;:r !&quot;:<br>
<div class="helpExample">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:r !uuencode binfile binfile</div>
This command reads &quot;binfile&quot;, uuencodes it and reads it into the current<br>
buffer.&nbsp;&nbsp;Useful when you are editing e-mail and want to include a binary<br>
file.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Constant" href="insert.html#read-messages" name="read-messages">read-messages</a><br>
When reading a file Vim will display a message with information about the read<br>
file.&nbsp;&nbsp;In the table is an explanation for some of the items.&nbsp;&nbsp;The others are<br>
self explanatory.&nbsp;&nbsp;Using the long or the short version depends on the<br>
<a class="Type" href="options.html#'shortmess'">'shortmess'</a>&nbsp;option.<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="PreProc">long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; meaning</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">[readonly]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">{RO}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the file is write protected<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[fifo/socket]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using a stream<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">[fifo]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using a fifo stream<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">[socket]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;using a socket stream<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[CR missing]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reading with &quot;dos&quot;&nbsp;<a class="Type" href="options.html#'fileformat'">'fileformat'</a>&nbsp;and a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NL without a preceding CR was found.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[NL found]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reading with &quot;mac&quot;&nbsp;<a class="Type" href="options.html#'fileformat'">'fileformat'</a>&nbsp;and a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NL was found (could be &quot;unix&quot; format)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[long lines split]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at least one line was split in two<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[NOT converted]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conversion from&nbsp;<a class="Type" href="options.html#'fileencoding'">'fileencoding'</a>&nbsp;to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Type" href="options.html#'encoding'">'encoding'</a>&nbsp;was desired but not<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;possible<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">[converted]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conversion from&nbsp;<a class="Type" href="options.html#'fileencoding'">'fileencoding'</a>&nbsp;to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a class="Type" href="options.html#'encoding'">'encoding'</a>&nbsp;done<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="Special">[crypted]</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file was decrypted<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[READ ERRORS]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; not all of the file could be read<br>
<br>
<br>
&nbsp;vim:tw=78:ts=8:ft=help:norl:<br>
</div>

</article>

<footer>
<a href="#top">Return to the top</a> - <a href="index.html">Return to main</a>
<span class="EnglishJapaneseLink">
  <span class="CurrentLanguage">English</span>
</span>
<br />
<div style="text-align:right;">
Hosted by <a href="https://github.com/vim-jp/vimdoc-en">vimdoc-en project</a><br />
If you met any problem, please report it to <a href="https://github.com/vim-jp/vimdoc-en/issues">issue</a>.<br />
</div>
</footer>

<!--<script src="js/check-referrer.js" type="text/javascript"></script>-->

</body>
</html>
<!-- vim:set ts=8 sts=2 sw=2 tw=0 et: -->
